常见排序算法(2)--简单选择排序

简单选择排序也比较简单,不过效率比前面的未优化版的冒泡排序会略微高一些,下面我们看看简单选择排序的代码吧。

void SelectSort(int *arr,int length)
{
    for (int i = 0; i < length-1; i++)
    {
        int min = i;
        for (int j = i+1; j < length; j++)
        {
            if (arr[min] > arr[j])
            {
                min = j;
            }
        }
        if (min != i)
        {
            swap(arr, min, i);
        }
    }
}

其实简单选择排序跟上一篇文章的冒泡排序1很像,唯一的区别就是简单选择排序用了一个min记录最小元素的序列号,待外循环执行完一次的时候,如果min!=i,则说明min的值有了改变,需要交换下标i和下标min元素的值。外循环每执行一次,就确保arr[i]是当前的最小值。
简单选择排序比冒泡排序1效率高的地方是,冒泡排序1的进行一次外循环的时候,可能会进行多次交换,而简单选择排序一次外循环最多进行一次交换。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,223评论 0 52
  • 总结一下常见的排序算法。 排序分内排序和外排序。内排序:指在排序期间数据对象全部存放在内存的排序。外排序:指在排序...
    jiangliang阅读 1,391评论 0 1
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 1,286评论 0 2
  • Sort Algorithm(ASC) [TOC] //怎么生成目录,纠结ing 插入排序 每一趟排序都将待排元素...
    一条小袍袍YoY阅读 453评论 0 1
  • 你是否为没留下痕迹的童年感到遗憾,是否为没能想起昔日伙伴的脸庞感到懊恼,是否还想听听幼时稚嫩的声音,是否还想看看幼...
    梦铁凝阅读 420评论 0 1