选择排序作为比较简单的排序,广泛应用在数据量较少的地方
下面是它的原理:
list[5] = {4,2,7,3,1}
这里有一个杂乱无章的五个数组成的数组,我们现在要对他们由小到大的排序
在数据量足够大的时候,我们不知道最小的那个数在哪,所以我们可以假定,最小的那个数在第一个即min_location = 0
我们让这个这个list[min_location]与数组的每一个数进行比较,如果数组中存在比它更小的数,那么这个更小的数的位置值赋给min_location
min_location再继续执行剩下的比较,经过第一轮比较,我们就能得到整个数组中最小数的位置min_location,之后我们把整个最小数与数组的第一位借助第三方变量进行互换即
int temp;
temp = list[0];
list[0] = list[min_location];
list[min_location] = temp;
然后我们忽略数组的第一位数,对后面的数再进行比较,注意此次比较我们仍然不知道后面最小的那个数的位置在哪,所以依然把第一个数作为我们的最小值的位置即min_location = 1
然后重复上面的操作,一共四轮对比,就能写出下面的代码
for(x=0;x<n-1;x++)//选择排序 ,从小到大
{
min_location = x;
for(y=x+1;y<n;y++)//总是跳过前面已经比较的那个进行比较
{
if(list[y]<list[min_location])
{
min_location = y;
}
}
temp = list[min_location];
list[min_location] = list[x];
list[x] = temp;
}
评论(0)
暂无评论