博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
几种常用的排序方法3--选择排序
阅读量:4502 次
发布时间:2019-06-08

本文共 1060 字,大约阅读时间需要 3 分钟。

选择排序

选择排序是一种不稳定的排序方式

选择排序的思想是:n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:

①初始状态:无序区为R[1..n],有序区为空。

②第1趟排序

  在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1]和R[2..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。

③第i趟排序

    第i趟排序开始时,当前有序区和无序区分别为R[1..i-1]和R(i..n)。该趟排序从当前无序区中选出关键字最小的记录 R[k],将它与无序区的第1个记录R交换,使R[1..i]和R分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。

   这样,n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果。

   选择排序的平均时间复杂度是O(n^2)。
1 void selection_sort(int a[],int size) 2 { 3      int min ;  4      for(int i = 0; i < size - 1; i++) 5      { 6              min = i ;  7              for(int j = i + 1; j < size; j++) 8              { 9                      if(a[min] > a[j])//寻找最小的值10                      {11                              min = j;          12                      }        13              }   14              if(min != i)15              {
//将最小的值交换到前面16 int temp = a[i];17 a[i] = a[min];18 a[min] = temp; 19 } 20 } 21 22 }

 

转载于:https://www.cnblogs.com/Java-tp/archive/2012/11/20/2779958.html

你可能感兴趣的文章
svg学习(三)rect
查看>>
ruby 模块 的引入
查看>>
CI Weekly #21 | iOS 持续集成快速入门指南
查看>>
利用DFS求联通块个数
查看>>
初识 python
查看>>
PCL Examples
查看>>
spring boot
查看>>
浏览器URL传参最大长度问题
查看>>
学习进度条
查看>>
Linux crontab 定时任务详解
查看>>
string成员函数
查看>>
onSaveInstanceState()方法问题
查看>>
[转]CocoaChina上一位工程师整理的开发经验(非常nice)
查看>>
大数据时代侦查机制有哪些改变
查看>>
雷林鹏分享:jQuery EasyUI 菜单与按钮 - 创建链接按钮
查看>>
Apache Traffic Server服务搭建
查看>>
poj1990两个树状数组
查看>>
学习python-day1
查看>>
Delphi的命令行编译命令
查看>>
BZOJ 1901 Zju2112 Dynamic Rankings 题解
查看>>