设有一组初始关键字序列为(24,35,12,27,18,26),则第3趟简单选择排序结束后的结果。
但我觉得是(12,18,24,35,27,26)
请问哪个答案才是对的? 展开
(12,18,24,35,27,26)
第1趟排序结果为:12 35 24 27 18 26
第2趟排序结果为:12 18 35 27 24 26
第3趟排序结果为:12 18 24 35 27 26
第4趟排序结果为:12 18 24 26 35 27
第5趟排序结果为:12 18 24 26 27 35
扩展资料
n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:
1,初始状态:无序区为R[1..n],有序区为空。
2,第1趟排序
在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1]和R[2..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。
……
3,第i趟排序
第i趟排序开始时,当前有序区和无序区分别为R[1..i-1]和R(i..n)。该趟排序从当前无序区中选出关键字最小的记录 R[k],将它与无序区的第1个记录R交换,使R[1..i]和R分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。
参考代码如下:
void selectSort(int a[],int n){
for(int i=1;i<=n-1;i++){//进行n-1趟选择
int index=i;
for(int j=i+1;j<=n;j++)//从无序区选取最小的记录
if(a[index]>a[j])
index=j;
if(index!=i)
swap( &a[i], &a[min] );;
}
}
参考资料:百度百科 - 选择排序
第1趟排序结果为:12 35 24 27 18 26
第2趟排序结果为:12 18 24 27 35 26
第3趟排序结果为:12 18 24 27 35 26
第4趟排序结果为:12 18 24 26 35 27
第5趟排序结果为:12 18 24 26 27 35
结果:
12 18 24 26 27 352 18 24 26 27 35
参考代码
#include <stdio.h>
void out(int a[], int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
}
void selectsort(int A[],int n)
{
int i,j,min,m;
for(i=0;i<n-1;i++)
{
min=i;//查找最小值
for(j=i+1;j<n;j++)
{
if(A[min]>A[j])
{
min=j;
}
}
if(min!=i)
{
m=A[min];
A[min]=A[i];
A[i]=m;
}
printf("第%d趟排序结果为:",i+1);
out(A,6);
printf("\n");
}
}
void main()
{
int a[6]={24,35,12,27,18,26};
selectsort(a,6);
printf("结果:\n");
out(a,6);
}
怎么说啊,不知道尽量别乱说,很可能会影响很多人的;