黑马程序员技术交流社区

标题: 选择排序 [打印本页]

作者: czylwq520    时间: 2015-9-28 23:13
标题: 选择排序
选择排序

算法思想简单描述:

在要排序的一组数中,选出最小的一个数与第一个位置的数交换;

然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环

到倒数第二个数和最后一个数比较为止。

选择排序是不稳定的。算法复杂度O(n^2)

算法实现:

/*
功能:选择排序
输入:数组名称(也就是数组首地址)、数组中元素个数
*/

void select_sort(int *x, int n)

{

int i, j, min, t;

for (i=0; i<n-1; i++) /*要选择的次数:0~n-2共n-1次*/

{

   min = i; /*假设当前下标为i的数最小,比较后再调整*/

   for (j=i+1; j<n; j++)/*循环找出最小的数的下标是哪个*/

   {

    if (*(x+j) < *(x+min))

    {   

     min = j; /*如果后面的数比前面的小,则记下它的下标*/

    }

   }  

   if (min != i) /*如果min在循环中改变了,就需要交换数据*/

   {

    t = *(x+i);

    *(x+i) = *(x+min);

    *(x+min) = t;

   }

}

}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2