选择排序的优化算法

来源:互联网 发布:ubuntu svn 导入源码 编辑:程序博客网 时间:2024/05/21 14:56

思路是在一次排序中找到最大的和最小的数的下标。

void select(int *array,int n)

{
int min,max;
int left = 0,right = n-1;
int i;
for(;left < right;left++,right--)
{
min = left;
max = right;
for(i = left;i <= right;i++)
{
if(array[i] < array[min])
min = i;
if(array[i] >array[max])
max = i;
}
if(min != left)
swap(&array[min],&array[left]);    
if(min != right)                   //这里要注意如果min的值正好是right,而max的值正好是left,那么两次交换后并没有改变
{
if(max != right)
swap(&array[max],&array[right]);
}
}
}
0 0