美文网首页
七大排序之选择排序

七大排序之选择排序

作者: 里里角 | 来源:发表于2018-08-13 22:54 被阅读6次

<SelectionSort>
“从篮子里取苹果排大小”
是冒泡排序的改进:小步慢跑——找到最小后再放入Sorted序列中,而不是一次一次交换。
简而言之,就是通过n-i次关键字之间的比较,从n-i+1个记录里选出关键字最小的记录,并与第i个元素交换之。

void SelectionSort(int a[],int lo,int hi)
{
    int n=hi-lo+1;
    int index;

    for(int i=lo;i<lo+n-1;i++)
    {
        index=i;
        for(int j=i+1;j<lo+n;j++)//通过j(从i后一个元素开始递增)一次又一次的扫描
                                      //将index替换为未排序数组中最小元素的下标值
        {
            if(a[index]>a[j]) index=j;
        }
        swap(a[i],a[index]);
    }
}

时间复杂度分析:
第i趟排序需要n-i次关键字之间的比较,此时需要比较的次数为(n-1)+(n-2)+...+1=n(n-1)/2次。对于交换次数而言,当最好的时候交换0次,最差的时候交换n-1次,总的时间幅度依然为O(n^2)。
性能依然优于冒泡排序,效率体现在移动操作远远少于冒泡排序。

相关文章

  • 七大排序算法之冒泡排序

    七大排序算法之冒泡排序 @(算法笔记)[排序算法, 冒泡排序, C++实现] 冒泡排序介绍 冒泡排序是七大排序算法...

  • 七大排序算法之快速排序

    七大排序算法之快速排序 @(算法笔记)[排序算法, 快速排序, C++实现] [TOC] 快速排序的介绍: 快速排...

  • 七大排序之选择排序

    “从篮子里取苹果排大小”是冒泡排序的改进:小步慢跑——找到最小后再放入Sorted序列中,而不是一次一次交换。简而...

  • JS实现排序算法

    原文:常见排序算法之JavaScript实现 - 知乎 目录 冒泡排序 选择排序 插入排序 合并排序 快速排序 1...

  • 3.1-选择排序-简单选择排序

    参考链接 选择排序:简单选择排序(Simple Selection Sort) 白话经典算法系列之四 直接选择排序...

  • 算法理解之排序-选择排序

    算法理解之排序-选择排序 选择排序是一种简单直观的排序算法, 以当前点为锚点, 向后依次进行比较所有未排序元素, ...

  • 3.2-选择排序-堆排序

    参考链接 选择排序:堆排序(Heap Sort) 白话经典算法系列之七 堆与堆排序 堆排序与快速排序,归并排序一样...

  • 常见排序算法

    这里介绍四种排序算法,选择排序、快速排序、归并排序、计数排序 选择排序(使用递归) 选择排序(使用循环) 快速排序...

  • 电废人生之 C基础系列20210114

    摸鱼之 在下列几种排序方法中,要求内存量最大的是______。 A快速排序 B插入排序 C选择排序 D归并排序 快...

  • 记录几个常见的排序算法

    常见的排序有:快速排序、冒泡排序、希尔排序、选择排序、插入排序、归并排序 冒泡排序: 插入排序: 选择排序: 希尔...

网友评论

      本文标题:七大排序之选择排序

      本文链接:https://www.haomeiwen.com/subject/wcrpbftx.html