推导过程

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实现选择排序+图解+代码解析相关推荐

  1. java中选择排序和冒泡排序_Java选择排序就是比冒泡排序牛「具体详情,请看此文」...

    什么是选择排序 选择排序原理即是,遍历元素找到一个最小(或最大)的元素,把它放在第一个位置,然后再在剩余元素中找到最小(或最大)的元素,把它放在第二个位置,依次下去,完成排序. 时间复杂度 选择排序的 ...

  2. Java利用选择排序和冒泡排序实现对键盘录入的数据排序

    Java利用选择排序和冒泡排序实现对键盘录入的数据排序 选择排序 选择排序是遍历元素找到最大(最小)的元素,放到第一个位置然后到剩余的元素里找到第二大(小)的元素放到第二个,因此类推,就可以得到一个排 ...

  3. c语言数组项目按身高排序,过三关 Java冒泡排序选择排序插入排序小练习

    材料:猴子排序,按照身高来从小到大来排序. 第一关: 老猴子带领小猴子队伍按大小逐一比较,交换,开始高矮排列队伍.(冒泡排序) 第二关: 太慢了,给第一关增加难度,进行选择排序 第三关: 最后,尝试选 ...

  4. 【排序算法】图解简单选择排序(图解堪比Debug显示每次循环结果)

    [排序算法]图解简单选择排序(图解堪比Debug分析每次循环结果) 写在前面: 本文主要介绍简单选择排序算法,通过图片一步步解释每一趟每一次的后移.代码通过C#实现,并输出每一次交换的情况和比较次数, ...

  5. 算法——排序——选择排序图解动画

    选择排序 简介 代码示例 排序过程 时间复杂度 最差时间复杂度&平均时间复杂度 最优时间复杂度 空间复杂度 稳定性 简介 选择排序(Selection Sort),它的工作原理是:第一次从待排 ...

  6. c++ java 选择排序,选择排序(示例代码)

    简述 选择排序的基本思想是:每一趟从待排序列中选取关键字最小的元素,作为有序序列的一个新的元素,直到待排序列只剩下一个元素,则完成排序.主要算法有简单选择排序和堆排序. 简单选择排序 算法思想 假设序 ...

  7. java基数排序 数组_万字长文带你掌握Java数组与排序,代码实现原理都帮你搞明白!...

    查找元素索引位置 基本查找 根据数组元素找出该元素第一次在数组中出现的索引 public class TestArray1 { public static void main(String[] arg ...

  8. 【十大经典排序算法】java实现--选择排序(2)

    选择排序概述 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置. 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾. 重复第二步,直到所有元素均排序完毕. 选择排序j ...

  9. java 之选择排序与冒号排序的详解

    选择排序: 核心思想:直接从待排数据中"选出"最小,或最大的数据,直接放在序列的前列位置,直到所有待排元素全部排列完毕 java代码的实现: public static void ...

  10. 选择排序 C++代码实现及性能分析 恋上数据结构笔记

    文章目录 复习梗概 算法思想及时间复杂度 选择排序的优化 代码及输出 完整代码 复习梗概 选择排序算法图解 选择排序在什么地方进行元素的调换 选择排序在什么地方优化,优化后的算法 时间复杂度分析 算法 ...

最新文章

  1. 前端工程师必须知道的vue前端面试题目汇总
  2. 深入理解C++中的explicit关键字
  3. 用注册表禁止windows添加新用户
  4. 2019年GitHub上最热门的Java开源项目
  5. JProfiler 解决 Java 服务器的性能跟踪
  6. python grouo by_在python中实现数据库下group by功能
  7. linux java缓存失效_转载:Linux服务器Cache占用过多内存导致系统内存不足最终java应用程序崩溃解决方案...
  8. mysql基本知识总结
  9. 4月1日起支付宝、微信扫码支付单日限额500元,够用吗?
  10. 《Java程序设计》期末复习资料
  11. 通过了注册电气工程师考试的, 介绍 经验
  12. 【商品架构day9】阿里商品的标题那么长、怎么办
  13. 用python+turtle画太阳花
  14. hnrxgs伸缩器在管道中的作用以及工作原理
  15. 加密技术——对称与非对称加密技术简述
  16. Android启动优化--异步优化
  17. 案例详解:理解Python中的“解析式”
  18. python求极限_数学——函数极限知识以及sympy库的limit
  19. avformat_open_input返回-1094995529 “Invalid data found when processing input“
  20. java中repeat什么意思_rep在音响上什么意思-功放上repeat-功放机repeat

热门文章

  1. 面向对象软件设计原则
  2. Android Design 1: Back键和Up键在App导航中的表现
  3. Sync Framework 词汇表
  4. 朗志轻量级项目管理解决方案截图
  5. 《数学之美》—自然语言处理
  6. Javascript倒计时 支持自定义样式
  7. CC-Python-文件操作
  8. MATLAB数值计算笔记
  9. 大数据可能带来三方面的伦理挑战
  10. Codeforces 464E. The Classic Problem