JAVA 数组 选择排序详解,逐步深入,选择核心思想(从头到尾比一遍)
public class Selectsorting { // void max(int array[]) { // int[] array = new int[3]; // for (int i = 0; i < array.length; i++) { // //5 - 10 // array[i] = (int)( (Math.random()* (100 - 10 + 1 ) ) + 10 ); // } // System.out.println("排序前==========================="); // for (int i : array) { // System.out.print(" "+i); // } // System.out.println("使用选择比较法找出最大值--------"); // // //数组 // int arrayLength = array.length; // int maxs = array[0]; // int temp = 0; // for (int i = 1; i < arrayLength; i++) { // if(maxs < array[i]) { // temp = array[i]; // array[i] = maxs; // maxs = temp; // } // } // System.out.println("选择找出最大值: "+ maxs); // // } public static void main(String[] args) { int[] array = new int[15]; int arrayLength = array.length; //冒泡 相邻比较 //选择 第一个和每一个鲁一边 for (int i = 0; i < array.length; i++) { //5 - 10 array[i] = (int)( (Math.random()* (100 - 10 + 1 ) ) + 10 ); } System.out.println("排序前 ----------------------------"); for (int i : array) { System.out.print(" " +i ); } /** * * 选择排序 官方标配版 * / // int temp = 0; // for (int i = 0; i < array.length; i++) { // for (int j = 0; j < array.length; j++) { // if(array[i] > array[j]) { // temp = array[i]; // array[i] = array[j]; // array[j] = temp; // } // } // } /** * 选择排序 旗舰版 */ // int tem = 0; // // arrayLength -1 外层循环arrayLength -1 次就可以得出结果 (考虑效率 也可以 不用 - 1 ) // for(int i = 0; i < arrayLength - 1; i++) { // // int j = i + 1 因为内层循环需要递减, // //外层循环每循环一次,就得出一个最大值, // //内层循环就比外层循环减少一次 如果不考虑效率可以初始化 j = 0 // for(int j = i + 1; j < arrayLength; j++) { // if(array[i] < array[j]) { // tem = array[i]; // array[i] = array[j]; // array[j] = tem; // } // } // } /** * 选择排序 豪华版 * * 以前每一次都是 操作下标进行交互,这一次我们就记住这个最大值的下标,让它循环完一轮在进行交换 */ int tem = 0; int p = 0; for (int i = 0; i < array.length - 1; i++) { //最大值下标 int indexMax = i; //穿件白色马甲行来 boolean flag = false; for (int j = i + 1; j < array.length; j++) { if(array[indexMax] > array[j]) { //有最大值 就 改标志 indexMax = j; //百色马甲上写上 斩立决 flag = true; p++; } } if(flag == true) { //穿着 白色马甲上写有斩立决的 关如秋后处斩的牢房! tem = array[indexMax]; array[indexMax] = array[i]; array[i] = tem; } } System.out.println("\r\n排序后==========================="); for (int i : array) { System.out.print(" " +i ); } } }
掌握核心思想:你就能写出来,核心思想:从头到尾比较一遍,找出最大值(最小值)
传播知识,分享快乐!
作者:IT_BULL
出处:http://www.cnblogs.com/itBulls/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
博客园-博客园。