用选择法对10个整数排序,用scanf输入。你用下面这种输入方法就可以了。
# include
int main()
{
int i,j,min,temp,a[10];
printf("enter data:\n");
for (i=0;i<10;i++)
{
printf("please enter ten numbers:\n");
scanf("%d",&a[i]); //输入10个数
}
printf("\n");
printf("The orginal numbers:\n");
for (i=0;i<10;i++) //在c语言中,数组的下标从0开始
printf("%5d",a[i]); //输出这10个数
printf("\n"); //以下8行是对这10个数排序
for (i=0;i<10;i++)
{min=i;
for(j=i+1;j<10;j++)
if (a[min]>a[j]) min=j;
temp=a[i]; //以下3行将a[i+1]~a[10]中最小值与a[i]对换
a[i]=a[min];
a[min]=temp;
}
printf("\n The sorted numbers:\n"); //输出已排好序的10个数
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
return 0;
}
扩展资料:
选择法排序基本思想:
每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。
简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。
以下为简单选择排序的存储状态,其中大括号内为无序区,大括号外为有序序列:
初始序列:{49 27 65 97 76 12 38}
第1趟:12与49交换:12{27 65 97 76 49 38}
第2趟:27不动 :12 27{65 97 76 49 38}
第3趟:65与38交换:12 27 38{97 76 49 65}
第4趟:97与49交换:12 27 38 49{76 97 65}
第5趟:76与65交换:12 27 38 49 65{97 76}
第6趟:97与76交换:12 27 38 49 65 76 97 完成
参考资料:
百度百科- 用选择法对10个整数排序
错误处粗体标注如下:
#include//应为#include
int main()
{
int i,j,n,a[10];//还需定义 int t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
// n = 10, 既然下面用了i
for(i=0;i for(j=i;ja[j])//应该为 for(j = i + 1; j { n=a[i]; a[i]=a[j]; a[j]=a[i]; }//应该为{ t=a[i]; a[i]=a[j]; a[j]=t; } for(i=0;i<10;i++) printf("%d\n",a[i]); return 0; } 扩展资料: 选择排序法 选择排序法 是对 定位比较交换法(冒泡排序法) 的一种改进。 选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。 简单选择排序的基本思想:第1趟,在待排序记录中选出最小的记录,将它与数组第2个数交换;第2趟,在待排序记录(即数组的其他数字)中选出最小的记录,将它与数组第3个数字交换; 以此类推,第i趟在待排序记录中选出最小的记录,将它与数组第i+1个数字交换,使有序序列不断增长直到全部排序完毕。 参考资料:百度百科-选择排序法
#include
int main()
{
int i,j,n,t,a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
{
n=i;
for(j=i+1;j<10;j++)
if(a[j]
t=a[n]; a[n]=a[i]; a[i]=t; } for(i=0;i<10;i++) printf("%d\n",a[i]); return 0; }
选择法排序是一种简单的容易实现的对数据排序的算法。以整形数组元素为例,有数组A[10],即A[0],A[1],…,A[8],A[9](假设其元素均互不相同)。要求对其元素排序使之递增有序。
首先以一个元素为基准,从一个方向开始扫描,比如从左至右扫描,以A[0]为基准。
接下来从A[0],…,A[9]中找出最小的元素,将其与A[0]交换。
然后将基准位置右移一位,重复上面的动作,比如,以A[1]为基准,找出A[1]~A[9]中最小的,将其与A[1]交换。
一直进行到基准位置移到数组最后一个元素时排序结束(此时基准左边所有元素均递增有序,而基准为最后一个元素,故完成排序)。
main()
int array[10];
//给数组初始化!
int i,j,k,temp;
for(i=0;i<10-1;i++) {
k=i;
for(j=i+1;j<10;j++)
if (array[j]
选择法排序,是最容易理解的。
写出程序,也是最简单的。
如下即是: