一,选择排序算法思路:每趟选择序列的最小值/最大值,采取贪心选择策略。

二,选择排序算法有两种:1.直接选择排序 2.堆排序(基于二叉树)。

(这里讲解直接选择排序)

三,直接选择排序算法描述:每一趟从n(n>0)个元素的数据序列中选出关键字最小/最大的元素并放在最前/最后位置,下一趟再从剩下n-1个元素中选出最大/最小的元素并放在此前/后位置,依此类推,经过n-1趟完成排序。

关键字序列{7,4,5,9,8,2,1}的直接选择排序(升序)过程如下图所示:

下面使用代码实现:

public static void selectSort(int[] arr) {for (int i = 0; i < arr.length - 1; i++) {int minindex = i;//假定最小值为iint min = arr[minindex];for (int j = i + 1; j < arr.length; j++) {//说明我们假定的最小值并不是最小值if (min > arr[j]) {  min = arr[j];//重置最小值minminindex = j;//重置最小值下标minindex}}//将i位置上的元素值和最小索引位置的元素值交换if (minindex != i) {arr[minindex] = arr[i];arr[i] = min;}}System.out.println(Arrays.toString(arr));}

四,直接选择排序算法分析:直接选择排序的比较次数与数据序列的初始排列无关,第i趟排序的比较次数是n-i,移动次数与数据序列的初始排列有关,排序序列移动0次;反序排序的数据序列,每趟排序都要交换,移动3(n-1)次,算法的总比较次数为n^2/2次。

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

空间复杂度:O(1)。直接选择排序算法不稳定。

五,适用场景:数据量不大,并且对稳定性没有要求的情况。

程序员八大排序算法之直接选择排序算法(java版)相关推荐

  1. 9个元素换6次达到排序序列_程序员必须掌握的:10大排序算法梳理已整理好

    从数组中选择最小元素,将它与数组的第一个元素交换位置.再从数组剩下的元素中选择出最小的元素,将它与数组的第二个元素交换位置.不断进行这样的操作,直到将整个数组排序. 动态过程 算法原理参考:图解选择排 ...

  2. Java常见排序算法之直接选择排序

    在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ...

  3. Java排序算法之直接选择排序

    Java排序算法之直接选择排序 基本过程:假设一序列为R[0]~R[n-1],第一次用R[0]和R[1]~R[n-1]相比较,若小于R[0],则交换至R[0]位置上.第二次从R[1]~R[n-1]中选 ...

  4. 《数据结构与算法》实验:排序算法实验比较——选择排序 堆排序

    <数据结构与算法>实验和课程Github资源 <数据结构与算法>实验:线性结构及其应用--算术表达式求值 <数据结构与算法>实验:树型结构的建立与遍历 <数据 ...

  5. python算法与数据结构-选择排序算法(33)

    阅读目录 一.选择排序的介绍 二.选择排序的原理 三.选择排序的图解 四.选择排序总结 五.选择排序的python代码实现 六.选择排序的C语言代码实现 七.选择排序的时间复杂度 八.选择排序的稳定性 ...

  6. 【大话数据结构算法】直接选择排序

    选择类排序的主要动作是"选择",直接选择排序采用最简单的选择方式,从头至尾顺序扫描序列,找出最小的一个记录,和第一个记录交换,接着从剩下的记录中继续这种选择和交换,最终使序列有序. ...

  7. java 排序原理_简单选择排序算法原理及java实现(超详细)

    简单选择排序的原理 简单选择排序的原理非常简单,即在待排序的数列中寻找最大(或者最小)的一个数,与第 1 个元素进行交换,接着在剩余的待排序的数列中继续找最大(最小)的一个数,与第 2 个元素交换.以 ...

  8. 排序算法:简单选择排序算法实现及分析

    简单选择排序算法介绍 简单选择排序(Simple Selection Sort)就是通过n-1次关键字排序之间的比较,从n-i+1个记录中选择关键字最小的记录,并和第i(1<=i<=n)记 ...

  9. java选择排序代码_Java排序算法总结之选择排序

    本文实例讲述了Java排序算法总结之选择排序.分享给大家供大家参考.具体分析如下: 选择排序的基本操作就是每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部 ...

  10. 一步一步写算法(之选择排序)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 选择排序是和冒泡排序差不多的一种排序.和冒泡排序交换相连数据不一样的是,选择排序只有在确定了最 ...

最新文章

  1. rgb和yuv的区别
  2. db和model用哪个开发大型项目 thinkphp_Java程序员开发大型应用程序时,必须要掌握几个的技巧...
  3. (转)SpringMVC学习(三)——SpringMVC的配置文件
  4. string 与 c style 字符串的效率测试
  5. 格力的“阵痛”与“头痛”
  6. 10月15日 第一天申请成功
  7. python matplotlib图中插入表格
  8. 计算机 信息安全常识
  9. vivo解bl锁_黔隆科技刷机教程酷派Y82820忘记密码刷机解锁降级救砖解屏幕锁账户锁教程...
  10. SQL语句学习指南 - 教程书籍
  11. asp中把数据导出为excel的2种方法
  12. 2000元以内办公用计算机,2000元以内买什么笔记本 便宜实用笔记本【推荐】
  13. 56ip数字标牌软件
  14. 浅谈交易开拓者程序化
  15. 强化学习方法(一):探索-利用困境exploration exploitation,Multi-armed bandit
  16. 【opencv】selective_search函数
  17. HTML的学习-2|HTML 标签(上)
  18. 安装 Dashboard
  19. geoserver 设置数据目录位置
  20. 下载哈姆雷特英文版并实现文本词频统计以及生成词云图

热门文章

  1. 旅游网站源码在哪下载,完整的
  2. Unix编程艺术-原则
  3. 优惠券的工厂与策略模式实现方案
  4. 6.Linux中的进程管理
  5. vue-scroller回到顶部
  6. 解决百度文库文档内容无法复制
  7. 计算机毕业论文基于springboot的社区物业服务管理项目源码
  8. matlab编写优化目标函数,基于MATLAB的二级齿轮减速器的优化设计
  9. 动态生成鼠标指针--可以利用已有的图片生成鼠标指针--C#代码
  10. mobileterminal命令大全