选择排序的思想是:每一趟的排序过程都是在当前位置后面剩下的待排序对象中选出值最小的那个,然后放到当前位置上。
该程序中k的定义主要是为了存放数组中最小数的位置。然后通过t=array[k];array[k]=array[i];array[i]=t;这三条语句,再把这数组中最小的数字放到前面。注意C语言当中的“=”不是等于,只是一种赋值运算。其中if(array[j]
如程序所给出的sort函数,k=i是为了设置每次排序的开始,是参照点;j=k呢,就是将此轮比较中最小的个数赋值给数组中的第i个,完成此次选择中最小数的选择。第一次排序从数组中第一个数开始,通过比较,确定最小的数,并通过t=array[k];array[k]=array[i];array[i]=t;
,完成赋值给a[o].以此类推,第二次由数组中第二个数组元素开始,也就是a[1]开始,比较数组中以下元素的大小,选择出余下元素中最小的,赋值给a[1],完成此次选择。以此类推,得到一个完整有序的数组。其中,比较次数分别为n-1,n-2,n-3、、、总次数为(n-1)n/2。你仔细想一下就会出来的。。。:-D
1、i=0, k=0,j=1,如果array[1]和array[0]比较,然后"k=1 t=array[k];array[k]=array[i];array[i]=t;"
表示将array[0]和array[1]较小的值赋给array[0];然后再将array[1]和array[2]作比较,将
较小的赋给array[0],如此类推,最后将最大值赋给array[0];
2、i=1, k,j重新赋值,按照1的结论将把除array[0]之外的所有值中最大的赋给array[1];
3、以此类推,将array[]升序排列。
空函数sort 让 k=i是为了只比较除最大数值之外的数值,k=j是为了在array[j]
不知道你能不能看懂 哈哈
从第i个数开始,比较后面的数,把最小的和第i个交换
当i=0时,交换完成,a[i]就是从第0个开始到最后一个中最小的那个
当i=1时,交换完成,a[i]就是从第1个开始到最后一个中最小的那个
.......
k是最小数的下标,然后a[k]和a[i]的数字交换,a[i]就是最小的了