[选择排序]的过程,从小到大排序:
(00) 23 18 52 83 67 6 1 12 36
(01) 1 18 52 83 67 6 23 12 36
(02) 1 6 52 83 67 18 23 12 36
(03) 1 6 12 83 67 18 23 52 36
(04) 1 6 12 18 67 83 23 52 36
(05) 1 6 12 18 23 83 67 52 36
(06) 1 6 12 18 23 36 67 52 83
(07) 1 6 12 18 23 36 52 67 83
(08) 1 6 12 18 23 36 52 67 83
排序的过程保存在文件 d:\\selectSort.txt
#include<stdio.h>
char fileName[]="d:\\selectSort.txt";
int printIndex;
int writeindex;
void printData(int *a,int n) //屏幕打印数据
{
int i;
printf("(%02d) ",printIndex);
for(i=0;i<n;i++)
{
printf("%4d",a[i]);
}
printf("\n");
printIndex++;
}
void writeFile(int *a,int n) //排序过程写入文件
{
FILE *fp;
int i;
fp=fopen(fileName,"a"); //"a"以附加的方式打开只写文件
if(fp == NULL)
{
printf("\n打开文件 %s 时出错.\n",fileName);
return;
}
fprintf(fp,"(%02d) ",writeindex);
for(i=0;i<n;i++)
{
fprintf(fp,"%4d",a[i]);
}
fprintf(fp,"\n");
fclose(fp); //关闭文件
writeindex++;
}
void select_sort(int *a,int n) //选择排序
{
int i,j,min,temp;
for(i=0;i<n-1;i++)
{
min=i;
for(j=i+1;j<n;j++)
{
if(a[min] > a[j]) //从小到大排序
{
min=j;
}
}
if(i != min)
{
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
printData(a,n);
writeFile(a,n);
}
}
int main()
{
int a[]={23,18,52,83,67,6,1,12,36};
int n;
n=sizeof(a)/sizeof(int); //整数的数量
printIndex=0;
writeindex=0;
printData(a,n);
writeFile(a,n);
//调用[选择排序]函数(从小到大排序)
select_sort(a,n);
printf("\n排序的过程保存在文件 %s\n",fileName);
return 0;
}
温馨提示:答案为网友推荐,仅供参考