直接选择排序

来源:互联网 发布:php 仿京东商城源代码 编辑:程序博客网 时间:2024/06/01 21:19

排序思想

     选择排序: 每次从当前待排序的记录中选取关键字最小的记录表,然后与待排序的记录序列中的第一个记录进行交换,直到整个记录序列有序为止。

     直接选择排序,也叫简单选择排序。

     基本操作:通过n-i次关键字间的比较,从n-i+1个记录中选取关键字最小的记录,然后和第i个记录进行交换,i=1, 2, … n-1 。

排序示例

设有关键字序列为:7, 4, -2, 19, 13, 6,直接选择排序的过程如下图1所示。

算法实现

void simple_selection_sort(int value[], int length){    int i, j, k;    int tmp = 0;    for(i=0; i<length; i++)    {        k = i;        for(j=i+1; j<length; j++)            if(value[j] < value[k])                k = j;        if(k != i)      /*   记录交换   */        {            tmp = value[i];            value[i] = value[k];            value[k] = tmp;        }    }}

算法分析

整个算法是二重循环:外循环控制排序的趟数,对n个记录进行排序的趟数为n-1趟;内循环控制每一趟的排序。
    进行第i趟排序时,关键字的比较次数为n-i,则:

比较次数:

∴  时间复杂度是:T(n)=O(n2)
    空间复杂度是:S(n)=O(1)
      从排序的稳定性来看,直接选择排序是不稳定的。

原创粉丝点击