选择排序是表面最稳定的排序算法之一,因为无论什么数据进去,其时间复杂度都是O(n*n),所以如果你的数据规模不大的话,可以考虑使用选择排序,因为它是基于内存排序的算法,速度很快,

它的工作原理是:在未排序的序列中找到最小(最大)的元素,放在序列的起始位置,然后再从剩余序列中继续寻找最小最大元素,放到已排序的元素末尾,以此类推,直到所有的元素都排序完毕;

原理很好理解,下面就来看具体的代码实现,

//选择排序
public class SelectionSort {public static void main(String[] args) {int[] arr = {11,18,43,32};System.out.println("排序前:" + Arrays.toString(arr) + "\r");System.out.println("排序后:" + Arrays.toString(selectionSort(arr)));}//排序方法public static int[] selectionSort(int[] arr){if(arr == null || arr.length <= 1){return null;}//外层循环定义排序经历的轮数for(int i=0;i<arr.length;i++){int minIndex = i;//内层循环为每一轮选择排序需要进行的数据比较for(int j=i;j<arr.length;j++){if(arr[j] < arr[minIndex]){      //找到最小的数minIndex = j;              //保存最小数的索引int temp = arr[minIndex];    //把找到的最小的数放到被比较的数的位置arr[minIndex] = arr[i];arr[i] = temp;}}}return arr;}}

运行main函数,可以看到排序后的结果,

选择排序的时间复杂度:简单选择排序的比较次数与序列的初始排序无关。 假设待排序的序列有 N 个元素,则比较次数永远都是N (N - 1) / 2。而移动次数与序列的初始排序有关。当序列正序时,移动次数最少,为 0。当序列反序时,移动次数最多,为3N (N - 1) / 2。

所以,综上,简单排序的平均时间复杂度为 O(N2)。

java排序算法之选择排序相关推荐

  1. Java经典排序算法:选择排序,动图演示排序过程

    Java经典排序算法:选择排序,动图演示排序过程 示意动图: public class Main {public static void main(String[] args) {new Main() ...

  2. 排序---初级排序算法(选择排序、插入排序和希尔排序)

    写在前面的话: 一枚自学Java和算法的工科妹子. 算法学习书目:算法(第四版) Robert Sedgewick 算法视频教程:Coursera  Algorithms Part1&2 本文 ...

  3. 【排序算法】选择排序(Selection sort)

    选择排序(Selection sort)是一种简单直观的排序算法. 选择排序介绍 它的基本思想是: 首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置:接着,再从剩余未排序的元 ...

  4. 函数模板案例_利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试

    案例描述: 利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试 #include <iostream& ...

  5. 排序算法 | 直接选择排序,算法的图解、实现、复杂度和稳定性分析

    排序算法 | 直接选择排序,算法的图解.实现.复杂度和稳定性分析 目录 1.直接选择排序的原理 2.图解直接选择排序 3.算法代码实现 4.算法复杂度分析.稳定性分析 直接选择排序 1.直接选择排序的 ...

  6. 堆排序算法c语言筛选法,【排序】排序算法之选择排序

    排序算法之选择排序 罗朝辉(http://www.cppblog.com/kesalin) 转载请注明出处 排序是数据处理中经常使用的一种重要运算,在计算机及其应用系统中,花费在排序上的时间在系统运行 ...

  7. 排序算法(3)选择排序

    排序算法(3)选择排序 原理:思想:两个变种(1)单侧选择:在一个无序数组中选择出每一轮中最大值(或最小值)元素,放到最前面或最后面(升序)(2)双向选择:在一个无序数组中选择出每一轮中最值元素,然后 ...

  8. 【排序算法】选择排序(C语言)

    [排序算法]-- 选择排序 目录 一.选择排序的原理 二.选择排序的代码实现 三.选择排序的优化 1. 优化思路 2. 排序优化后问题 3. 优化代码的实现 四.选择排序的效率 一.选择排序的原理 ​ ...

  9. java中的排序算法——简单选择排序,树形选择排序与堆排序(一)

    package com.sort; /**  * 选择排序:  * 简单选择排序,树形选择排序与堆排序  *   */ public class SelecSortDemo { /** * ----- ...

  10. 排序算法-简单选择排序

    文章目录 1.基本介绍 2.选择排序的思想 3.选择排序思路分析图 4.代码实现 1.基本介绍 选择排序属于内部排序算法,是从预排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的 ...

最新文章

  1. 从零开始编写自己的C#框架(16)——Web层后端父类
  2. SET ROWCOUNT
  3. C语言经典例1-无重复数字的三位数
  4. 打开aspx现有实例
  5. 字符串根据字典值排序问题
  6. Python中sort和sorted的用法与区别
  7. Java实现结构体,让字节流封送简单起来
  8. sql 命令使用简单记录
  9. WPF快速指导2:模板
  10. 不等待输入_明明显示“对方正在输入”却总等不来回复,其实是你误解了
  11. python多线程没用_Python 的多线程原来不是真的多线程啊
  12. Python中字典的增、删、查
  13. 配置tomcat tomcat与nginx的整合
  14. JavaScript、PHP、Golang、Haskell、Elixir,哪个才是最佳编程语言?
  15. linux 分区顺序 boot,关于Liunx下的硬盘分区问题(/boot分区)?
  16. php 5分钟前,PHP实现时间轴函数(刚刚、5分钟前)
  17. Windos配置本地config文件,ssh访问指定服务器
  18. 2019美赛A题翻译
  19. 操作系统原理,多道程序设计,并发环境与并发任务,进程定义,进程控制块PCB,PCB维护的进程数据
  20. 怎样用计算机制作思维导图,电脑如何制作思维导图?超简单思维导图制作方法...

热门文章

  1. android启动效果
  2. hdu 2523 SORT AGAIN
  3. windows 安装leopard方法
  4. 在win7下搭建php+apache+mysql环境
  5. asp.net 2.0 下的一个小技巧
  6. Linux快速复制或删除大量小文件
  7. 人力资源社会保障部关于公布国家职业资格目录的通知
  8. layoutSubviews调用
  9. PyQt5教程(三)——布局管理
  10. java语言体系的技术简介之JSP、Servlet、JDBC、JavaBean(Application)