栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

选择排序算法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

选择排序算法

选择排序算法 对n个元素序列进行排序:

从第一个元素开始扫描剩下的n-1个元素,找到它的最小元素,然后个第一个元素交换,将最小元素放到它在有序列表的最终位置上。然后从第二个元素开始,扫描剩下的n-2个元素,找到第二最小元素,再和第二个元素交换位置,把第二个最小元素放在有序列表的最终位置上。故可得到一般性解释即从第i个元素开始,从剩下的n-i个元素中找到第i个最小元素再和第i个位置进行交换,最终得到i在序列中的最终位置。

伪代码:

算法 SelectionSort(A[0...n-1]) //该算法用选择排序进行排序 //输入:一个可排序数组A[0...n-1] //输出:升序排列的数组A[0...n-1]

for i <- 0 to n-2 do

Min <- i

for j <- i+1 to n-1 do

if A[ j ] < A[ Min ] Min <- j

Swap A[ i ] and A[ Min ]

选择排序基于C++的实现
void selectionSort(int A[]){
  for(int i = 0; i <= n-2; i++){  
    int Min = i;  //初始最小秩为i
    for(int j = i+1; j <= n-1; j++){
      if(A[j] < A[Min])  //扫描过程中发现小于A[Min]的元素并
        Min = j;  //重新更新新最小元素的秩
    }
    swap(A[i],A[Min]);  //交换位置i和Min的值
  }
}
算法的时间效率

该算法的基本操作时键值的比较A[ i ] < A[ Min ],这个比较的执行次数仅仅依赖于数组的规模,并由下面的求和公式给出:



时间效率:
 

对于任何输入来说,选择排序都是一个平方级算法,但键的交换次数仅为线性级,这个特性使得选择排序算法优于许多其他的排序算法。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1018426.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号