A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© czylwq520 中级黑马   /  2015-9-28 23:13  /  722 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

选择排序

算法思想简单描述:

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

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

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

选择排序是不稳定的。算法复杂度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;

   }

}

}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马