码迷,mamicode.com
首页 > 编程语言 > 详细

排序算法之简单选择排序

时间:2017-07-19 23:22:41      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:style   时间   tom   abs   clip   div   element   order   组元   

基本思想

在一组元素中选择具有最小排序码的元素,若它不是这组元素中的第一个元素,则将它与这组元素中的第一个元素对调;在未排序的剩下的元素中反复运行以上步骤,直到剩余元素仅仅有一个为止。

代码

private void selectSort(int[] a, int left, int right) {
    for (int i = left; i < right; i++) {
        int k = i;
        int temp;
        for (int j = i + 1; j <= right; j++) {
            if (a[j] < a[k])
                k = j;
        }
        if (k != i){
            temp = a[i];
            a[i] = a[k];
            a[k] = temp;
        }
    }
}

性能分析

  • 时间复杂度
    简单选择排序的排序码比較次数KCN与元素的初始排列无关。

    第i趟选择具有最小排序码元素所需的比較次数总是n?i?1次,如果整个待排序元素序列有n个元素。因此总的排序码比較次数为

    KCN=m=0n?2(n?i?1)=n(n?1)2

    元素的移动次数与元素序列的初始排列有关。在最好情况下。即当初始序列为有序时,无需移动元素;在最坏的情况下,即每一趟都要进行元素交换。

    所以平均情况下的时间复杂度为O(n2)

  • 稳定性
    简单选择排序是一种不稳定的排序方法。

排序算法之简单选择排序

标签:style   时间   tom   abs   clip   div   element   order   组元   

原文地址:http://www.cnblogs.com/wzzkaifa/p/7208190.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!