选择排序

时间:2024-08-27 05:55:50编辑:笔记君

怎么用选择法对10个整数进行排序?

选择法排序是一种简单的容易实现的对数据排序的算法。以整形数组元素为例,有数组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]<array[k]) k="j" ;="" temp="array[k];array[k]=array;array=temp;" }="" }

用选择法怎么对10个整数排序?

用选择法对10个整数排序,用scanf输入。如下:# includeint 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;}选择排序原理:用maxPos标记区间中首元素位置,然后用后序元素依次与maxPos标记的元素进行比较,如果有元素大于maxPos位置的元素,用maxPos标记该元素的位置,直到区间的末尾。该趟选择完成后,即找到该区间中最大元素,如果maxPos标记的最大元素不在区间末尾,用maxPos位置元素与区间末尾的元素进行交换。继续新一趟选择,直到区间中剩余一个元素。

上一篇:松下2003

下一篇:真三国无双五修改器