0
点赞
收藏
分享

微信扫一扫

选择排序 - selection sort

人间四月天i 2022-03-30 阅读 171

思想

一个可排序的序列a,大小为n,将a分成左右两部分,大小分别为n1和n2,则有n1 + n2 = n,其中n1部分为已排序的子序列,n2部分为未排序的子序列。因此如果n1部分是从小到大排列,则从n2部分选出最小的一个,排到n1部分的末尾,则n1部分仍然是已排序的序列。

选择排序的思想如上所述,排序开始时将n1置为0,n2置为n,处理一遍之后n1+1,循环处理知道n1=n-1即将整个排序序列a排序完成。

代码

for (int i = 0; i < n - 1; i++)

{

    int min_index = i;

    for (int j = i + 1; j < n; j++)

    {

        if (a[j] < a[min_index])

            min_index = j;

    }

    int tmp = a[i];

    a[i] = a[j];

    a[j] = tmp;

}

算法分析

时间复杂度

选择排序的操作有比较和交换的次数。

对于选择,次数为

(n-1) + (n-2) + 1

对于交换,次数为

n-1

空间复杂度

没有引入额外的存储空间,因此为0.

举报

相关推荐

0 条评论