1. 选择排序
基本思想:
将数组看成有两部分组成:有序部分和无序部分(有序部分后面是无序部分)
从无序部分中找出个最小(或最大)值,与无序部分的第一个元素互换
这个第一个元素变为有序部分的最后一个元素。
算法实现(从小到大):
#define swap( x, y, z ) ( (z) = (x), (x) = (y), (y) = (z) )
int sort( int list[], int size)
{
int i;
int j;
int min;
int temp;
if( size <= 1 || NULL == list )
{
return -1;
}
// 扩大有序部分
for( i = 0; i < size - 1; i ++ )
{
min = i; //记录无序部分最小元素位置
// 将 list[0] -list[i-1]之间的元素看成是有序部分, 将 list[i] -list[size -1]之间的元素看成是无序部分
for( j = i + 1; j < size; j++ )
{
if( list[j] < list[min] )
{
min = j;
}
swap( list[i], list[min], temp);
}
}
return 0;
}
时间复杂度: n2
阅读(497) | 评论(0) | 转发(0) |