选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。

  

  时间复杂度:O(n^2)

  最优时间复杂度:O(n^2)


  代码实现(JAVA)

 public class SelectionSort {
public static void main(String[] args){
int []elem={3,4,12,6,87,1,22,45,5};
SelectionSort sort=new SelectionSort();
sort.sort(elem);
for(int i=0;i<elem.length;i++)
System.out.print(elem[i]+" ");
}
public int[] sort(int[] elem){
for(int i=0;i<elem.length-1;i++){
int minNum=i;
for(int j=i+1;j<elem.length;j++){//选出最小的elem中元素,记录下标
if(elem[j]<elem[minNum])
minNum=j;
}
if(minNum!=i){
int temp=elem[i];
elem[i]=elem[minNum];
elem[minNum]=temp;
}
}
return elem;
}
}

最新文章

  1. Unity3d入门 - 关于unity工具的熟悉
  2. Linux 系统中的MySQL数据库默认区分大小写
  3. Android权限 uses-permission
  4. angularJs之模块化
  5. 【转】 WebService到底是什么?
  6. 快速排序 Quick Sort
  7. Rails常用命令
  8. oracle SQL语句练习MERGE、模糊查询、排序、
  9. wcf系列学习5天速成——第四天 wcf之分布式架构
  10. how to enable #ifdef macro in the command line of make?
  11. 微信小程序语音识别服务搭建全过程解析(https api开放,支持新接口mp3录音、老接口silk录音)
  12. 【原】无脑操作:IDEA使用时,提示&quot;8080端口被占用&quot;的解决
  13. java_泛型2
  14. vue-element 动态单选多选全选
  15. HDU - 3642 Get The Treasury(线段树求体积交)
  16. CMD 命令2
  17. ERROR org.redisson.client.handler.CommandDecoder - Unable to decode data. channel
  18. MariaDB安装、初始化及常用操作
  19. 使用EntityManager批量保存数据
  20. linux下apache中httpd.conf的ServerAdmin 是设置的什么?

热门文章

  1. linux tcpdump补充
  2. Gym101350 FMonkeying Around
  3. dubbo 相关面试题 有用
  4. Solidity字符串拼接实现oraclize动态查询
  5. java容器 Map Set List
  6. Vue.js如何搭建本地dev server和json-server 模拟请求服务器
  7. ASP.NET中Service接受前端单个及多个数据的写法
  8. 快速获取.NET DLL文件编译时间
  9. 函数LEN()使用方法
  10. spring mvc 框架启动报错:nested exception is java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal 解决办法