程序员八大排序算法之直接选择排序算法(java版)
一,选择排序算法思路:每趟选择序列的最小值/最大值,采取贪心选择策略。
二,选择排序算法有两种: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版)相关推荐
- 9个元素换6次达到排序序列_程序员必须掌握的:10大排序算法梳理已整理好
从数组中选择最小元素,将它与数组的第一个元素交换位置.再从数组剩下的元素中选择出最小的元素,将它与数组的第二个元素交换位置.不断进行这样的操作,直到将整个数组排序. 动态过程 算法原理参考:图解选择排 ...
- Java常见排序算法之直接选择排序
在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ...
- Java排序算法之直接选择排序
Java排序算法之直接选择排序 基本过程:假设一序列为R[0]~R[n-1],第一次用R[0]和R[1]~R[n-1]相比较,若小于R[0],则交换至R[0]位置上.第二次从R[1]~R[n-1]中选 ...
- 《数据结构与算法》实验:排序算法实验比较——选择排序 堆排序
<数据结构与算法>实验和课程Github资源 <数据结构与算法>实验:线性结构及其应用--算术表达式求值 <数据结构与算法>实验:树型结构的建立与遍历 <数据 ...
- python算法与数据结构-选择排序算法(33)
阅读目录 一.选择排序的介绍 二.选择排序的原理 三.选择排序的图解 四.选择排序总结 五.选择排序的python代码实现 六.选择排序的C语言代码实现 七.选择排序的时间复杂度 八.选择排序的稳定性 ...
- 【大话数据结构算法】直接选择排序
选择类排序的主要动作是"选择",直接选择排序采用最简单的选择方式,从头至尾顺序扫描序列,找出最小的一个记录,和第一个记录交换,接着从剩下的记录中继续这种选择和交换,最终使序列有序. ...
- java 排序原理_简单选择排序算法原理及java实现(超详细)
简单选择排序的原理 简单选择排序的原理非常简单,即在待排序的数列中寻找最大(或者最小)的一个数,与第 1 个元素进行交换,接着在剩余的待排序的数列中继续找最大(最小)的一个数,与第 2 个元素交换.以 ...
- 排序算法:简单选择排序算法实现及分析
简单选择排序算法介绍 简单选择排序(Simple Selection Sort)就是通过n-1次关键字排序之间的比较,从n-i+1个记录中选择关键字最小的记录,并和第i(1<=i<=n)记 ...
- java选择排序代码_Java排序算法总结之选择排序
本文实例讲述了Java排序算法总结之选择排序.分享给大家供大家参考.具体分析如下: 选择排序的基本操作就是每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部 ...
- 一步一步写算法(之选择排序)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 选择排序是和冒泡排序差不多的一种排序.和冒泡排序交换相连数据不一样的是,选择排序只有在确定了最 ...
最新文章
- rgb和yuv的区别
- db和model用哪个开发大型项目 thinkphp_Java程序员开发大型应用程序时,必须要掌握几个的技巧...
- (转)SpringMVC学习(三)——SpringMVC的配置文件
- string 与 c style 字符串的效率测试
- 格力的“阵痛”与“头痛”
- 10月15日 第一天申请成功
- python matplotlib图中插入表格
- 计算机 信息安全常识
- vivo解bl锁_黔隆科技刷机教程酷派Y82820忘记密码刷机解锁降级救砖解屏幕锁账户锁教程...
- SQL语句学习指南 - 教程书籍
- asp中把数据导出为excel的2种方法
- 2000元以内办公用计算机,2000元以内买什么笔记本 便宜实用笔记本【推荐】
- 56ip数字标牌软件
- 浅谈交易开拓者程序化
- 强化学习方法(一):探索-利用困境exploration exploitation,Multi-armed bandit
- 【opencv】selective_search函数
- HTML的学习-2|HTML 标签(上)
- 安装 Dashboard
- geoserver 设置数据目录位置
- 下载哈姆雷特英文版并实现文本词频统计以及生成词云图