java实现选择排序+图解+代码解析
推导过程
package data_structure;import java.util.Arrays;public class selectdeduction {public static void main(String[] args) {int[] arr = { 5, 0, 1, 6, 4, 2};select(arr);}public static void select(int[] arr) {//第一轮//假定当前最小数的索引就是0int minIndex=0;int min=arr[0];//最小数就是索引为0的那个数for(int j=0+1;j<arr.length;j++) {//因为上面假定最小的就是一个数了,所以这里0+1表示从第二个数开始比if(min>arr[j]) {//如果假定的数大于他后面那个数,说明假定的不是最小的数min=arr[j];//就把最小的这个数赋给min(重置min)minIndex=j;//就把这个数的下标赋给最小值的索引(重置索引}}//将最小值放在arr[0]的位置上arr[minIndex]=arr[0];//把最小值的下标放在数组的最前面去arr[0]=min;//最小值就变成了下标为0的数System.out.println("第一轮后:");System.out.println(Arrays.toString(arr));//第二轮//假定当前最小数的索引就是0minIndex=1;min=arr[1];//最小数就是索引为0的那个数for(int j=0+2;j<arr.length;j++) {//因为上面假定最小的就是一个数了,所以这里0+1表示从第二个数开始比if(min>arr[j]) {//如果假定的数大于他后面那个数,说明假定的不是最小的数min=arr[j];//就把最小的这个数赋给min(重置min)minIndex=j;//就把这个数的下标赋给最小值的索引(重置索引}}//将最小值放在arr[0]的位置上arr[minIndex]=arr[1];//把最小值的下标放在数组的最前面去arr[1]=min;//最小值就变成了下标为0的数System.out.println("第二轮后:");System.out.println(Arrays.toString(arr));//第三轮//假定当前最小数的索引就是0minIndex=2;min=arr[2];//最小数就是索引为0的那个数for(int j=0+3;j<arr.length;j++) {//因为上面假定最小的就是一个数了,所以这里0+1表示从第二个数开始比if(min>arr[j]) {//如果假定的数大于他后面那个数,说明假定的不是最小的数min=arr[j];//就把最小的这个数赋给min(重置min)minIndex=j;//就把这个数的下标赋给最小值的索引(重置索引}}//将最小值放在arr[0]的位置上arr[minIndex]=arr[2];//把最小值的下标放在数组的最前面去arr[2]=min;//最小值就变成了下标为0的数System.out.println("第三轮后:");System.out.println(Arrays.toString(arr));//第四轮//假定当前最小数的索引就是0minIndex=3;min=arr[3];//最小数就是索引为0的那个数for(int j=0+4;j<arr.length;j++) {//因为上面假定最小的就是一个数了,所以这里0+1表示从第二个数开始比if(min>arr[j]) {//如果假定的数大于他后面那个数,说明假定的不是最小的数min=arr[j];//就把最小的这个数赋给min(重置min)minIndex=j;//就把这个数的下标赋给最小值的索引(重置索引}}//将最小值放在arr[0]的位置上arr[minIndex]=arr[3];//把最小值的下标放在数组的最前面去arr[3]=min;//最小值就变成了下标为0的数System.out.println("第四轮后:");System.out.println(Arrays.toString(arr));//第五轮//假定当前最小数的索引就是0minIndex=4;min=arr[4];//最小数就是索引为0的那个数for(int j=0+5;j<arr.length;j++) {//因为上面假定最小的就是一个数了,所以这里0+1表示从第二个数开始比if(min>arr[j]) {//如果假定的数大于他后面那个数,说明假定的不是最小的数min=arr[j];//就把最小的这个数赋给min(重置min)minIndex=j;//就把这个数的下标赋给最小值的索引(重置索引}}//将最小值放在arr[0]的位置上arr[minIndex]=arr[4];//把最小值的下标放在数组的最前面去arr[4]=min;//最小值就变成了下标为0的数System.out.println("第五轮后:");System.out.println(Arrays.toString(arr));}
}
选择排序完整代码:
package data_structure;import java.util.Arrays;public class math {public static void main(String[] args) {int[] arr = { 5, -1, 4, 68, 24 };selectsort(arr);}public static void selectsort(int[] arr) {// 选择排序//arr.length-1 代表轮询次数比数组长度少一for (int i = 0; i < arr.length - 1; i++) {int minIndex = i;//假定最小的数就是第一个下标int min =arr[i];//假定第一个数就是数组中最小的数for(int j = i + 1;j<arr.length;j++) {if(min>arr[j]) {//说明不是最小值min=arr[j];//重置minminIndex=j;//重置minIndex}}//将最小值放在min[0]里。即交换if(minIndex != i) {arr[minIndex]=arr[i];arr[i]=min;}}System.out.println(Arrays.toString(arr));}
}
总结
java实现选择排序+图解+代码解析相关推荐
- java中选择排序和冒泡排序_Java选择排序就是比冒泡排序牛「具体详情,请看此文」...
什么是选择排序 选择排序原理即是,遍历元素找到一个最小(或最大)的元素,把它放在第一个位置,然后再在剩余元素中找到最小(或最大)的元素,把它放在第二个位置,依次下去,完成排序. 时间复杂度 选择排序的 ...
- Java利用选择排序和冒泡排序实现对键盘录入的数据排序
Java利用选择排序和冒泡排序实现对键盘录入的数据排序 选择排序 选择排序是遍历元素找到最大(最小)的元素,放到第一个位置然后到剩余的元素里找到第二大(小)的元素放到第二个,因此类推,就可以得到一个排 ...
- c语言数组项目按身高排序,过三关 Java冒泡排序选择排序插入排序小练习
材料:猴子排序,按照身高来从小到大来排序. 第一关: 老猴子带领小猴子队伍按大小逐一比较,交换,开始高矮排列队伍.(冒泡排序) 第二关: 太慢了,给第一关增加难度,进行选择排序 第三关: 最后,尝试选 ...
- 【排序算法】图解简单选择排序(图解堪比Debug显示每次循环结果)
[排序算法]图解简单选择排序(图解堪比Debug分析每次循环结果) 写在前面: 本文主要介绍简单选择排序算法,通过图片一步步解释每一趟每一次的后移.代码通过C#实现,并输出每一次交换的情况和比较次数, ...
- 算法——排序——选择排序图解动画
选择排序 简介 代码示例 排序过程 时间复杂度 最差时间复杂度&平均时间复杂度 最优时间复杂度 空间复杂度 稳定性 简介 选择排序(Selection Sort),它的工作原理是:第一次从待排 ...
- c++ java 选择排序,选择排序(示例代码)
简述 选择排序的基本思想是:每一趟从待排序列中选取关键字最小的元素,作为有序序列的一个新的元素,直到待排序列只剩下一个元素,则完成排序.主要算法有简单选择排序和堆排序. 简单选择排序 算法思想 假设序 ...
- java基数排序 数组_万字长文带你掌握Java数组与排序,代码实现原理都帮你搞明白!...
查找元素索引位置 基本查找 根据数组元素找出该元素第一次在数组中出现的索引 public class TestArray1 { public static void main(String[] arg ...
- 【十大经典排序算法】java实现--选择排序(2)
选择排序概述 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置. 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾. 重复第二步,直到所有元素均排序完毕. 选择排序j ...
- java 之选择排序与冒号排序的详解
选择排序: 核心思想:直接从待排数据中"选出"最小,或最大的数据,直接放在序列的前列位置,直到所有待排元素全部排列完毕 java代码的实现: public static void ...
- 选择排序 C++代码实现及性能分析 恋上数据结构笔记
文章目录 复习梗概 算法思想及时间复杂度 选择排序的优化 代码及输出 完整代码 复习梗概 选择排序算法图解 选择排序在什么地方进行元素的调换 选择排序在什么地方优化,优化后的算法 时间复杂度分析 算法 ...
最新文章
- 前端工程师必须知道的vue前端面试题目汇总
- 深入理解C++中的explicit关键字
- 用注册表禁止windows添加新用户
- 2019年GitHub上最热门的Java开源项目
- JProfiler 解决 Java 服务器的性能跟踪
- python grouo by_在python中实现数据库下group by功能
- linux java缓存失效_转载:Linux服务器Cache占用过多内存导致系统内存不足最终java应用程序崩溃解决方案...
- mysql基本知识总结
- 4月1日起支付宝、微信扫码支付单日限额500元,够用吗?
- 《Java程序设计》期末复习资料
- 通过了注册电气工程师考试的, 介绍 经验
- 【商品架构day9】阿里商品的标题那么长、怎么办
- 用python+turtle画太阳花
- hnrxgs伸缩器在管道中的作用以及工作原理
- 加密技术——对称与非对称加密技术简述
- Android启动优化--异步优化
- 案例详解:理解Python中的“解析式”
- python求极限_数学——函数极限知识以及sympy库的limit
- avformat_open_input返回-1094995529 “Invalid data found when processing input“
- java中repeat什么意思_rep在音响上什么意思-功放上repeat-功放机repeat