数组排序之选择排序
来源:互联网 发布:下载微博软件 编辑:程序博客网 时间:2024/06/09 22:26
数组排序之选择排序
package arraysort;/*2017 * 直接排序法 * a.length=6 * a[0] a[1] a[2] a[3] a[4] a[5] * 先确定a[0]为最小值依次和a[1] a[2] a[3] a[4] a[5]比较,取得最小值 * * 初始值:34 19 11 109 3 56 * 先确定a[0]为最小值:19 34 11 109 3 56 //a[0]和a[1]比较 * 11 34 19 109 3 56 //a[0]和a[2]比较 * 11 34 19 109 3 56 //a[0]和a[3]比较 * 3 34 19 109 11 56 //a[0]和a[4]比较 * 3 34 19 109 11 56 //a[0]和a[5]比较 * 依次确定a[1]为次小值(a[0]固定) * 依次确定a[2]为次小值(a[0] a[1]固定) * ... * ------------------------------------------------------------------- *提高效率的直接选择排序 *初始化: 34 19 11 109 3 56 *第一轮: [3] 19 11 109 (34) 56 *第二轮: 3 [11] (19) 109 34 56 *第三轮: 3 11 [19] 109 34 56 *第四轮:3 11 19 [34] 109 56 *第五轮:3 11 19 34 [56] 109 *summary:只需要找出每轮最小值,固定在index为0上(同理每轮最大也固定index=a.length-1上) * 依次找出每轮最小值,固定在index为0+1上 *''''''''''依次循环即可*/public class SelecSortDemo {public static void main(String[] args) {int[] a = { 34, 19, 11, 109, 3, 56 };// selectSort(a);selectSortPlus(a);}public static void selectSort(int[] arr) {for (int i = 0; i < arr.length - 1; i++) {// 控制外循环次数for (int j = i + 1; j < arr.length; j++) {if (arr[i] > arr[j]) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}printArr(arr);}}public static void selectSortPlus(int[] arr) {for (int i = 0; i < arr.length - 1; i++) {// 固定外循环的次数int Min = arr[i];int minIndex = i;for (int j = i + 1; j < arr.length; j++) {if (Min > arr[j]) {// 求最小值Min = arr[j];minIndex = j;}}/* * for (int k = i; k < arr.length; k++) {//找最小值索引的方式可以和↑上面的循环写在一起 * if(Min==arr[k]){ minIndex=k; } } */if (minIndex != i) {int temp = arr[i];arr[i] = Min;arr[minIndex] = temp;}printArr(arr);}}public static void printArr(int[] arr) {for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}System.out.println();}}
阅读全文
0 0
- 数组排序之选择排序:
- 数组排序之选择排序
- 数组之选择排序
- java学习之 数组排序-选择排序
- 数组排序--选择排序
- 数组排序-选择排序
- 数组排序---选择排序
- 排序之选择排序
- 排序之选择排序
- 排序之选择排序
- 排序之选择排序
- 排序之选择排序
- 排序之选择排序
- 排序之选择排序
- 排序之选择排序
- 排序之选择排序
- 排序之选择排序
- 排序之选择排序
- Vue, App与我(十四)
- Git--入门篇(一)
- python的初步学习笔记
- Sqoop中import & export & job & eval与options-file
- 原来你是我最想留住的幸运
- 数组排序之选择排序
- 《C++ Concurrency In Action》part5 同步并发操作(下)
- 说说进程与线程的区别与联系
- 【安全牛学习笔记】上传漏洞基础知识
- 前端JS小坑集锦
- python---实战3统计特定时间次数(文件操作、替换、列表、排序、去重、元组、集合)
- 复习:tcp和udp
- CentOS6/7防火墙设置
- C程序,简单模仿扫雷游戏,10行 10列