排序算法之简单选择排序

来源:互联网 发布:淘宝退款骗局 编辑:程序博客网 时间:2024/05/01 10:02

基本思想

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

代码

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趟选择具有最小排序码元素所需的比较次数总是ni1次,假设整个待排序元素序列有n个元素。因此总的排序码比较次数为
    KCN=m=0n2(ni1)=n(n1)2

    元素的移动次数与元素序列的初始排列有关。在最好情况下,即当初始序列为有序时,无需移动元素;在最坏的情况下,即每一趟都要进行元素交换。所以平均情况下的时间复杂度为O(n2)
  • 稳定性
    简单选择排序是一种不稳定的排序方法。
0 0
原创粉丝点击