算法图解之选择排序
假设你的计算机存储了很多乐趣。对于每个乐队,你都记录了其作品被播放的次数。 如果你要将这个列表按播放次数从多到少的顺序排列,从而将你喜欢的乐队排序。该如何做呢? 我第一眼看到这个问题时,想到的是通过sql解决这个问题 不过我觉得sql反而麻烦,于是转用冒泡排序。代码示例如下: package cn.pratice.simple; public class BubbleSort { static void main(String[] args) { int [] arr = {156,141,1)">35,1)">94,1)">88,1)">61,1)">111}; System.out.println("排序前数组为:"); for (int i = 0; i < arr.length; i++) { System.arr:"+arr[i]); } 0; i < arr.length-1; i++) { //外层循环控制排序趟数 int j = 0; j < arr.length-1-i; j++) {内层循环控制每一趟排序多少次 if(arr[j]>arr[j+1]) { int temp = arr[j]; arr[j] = arr[j+]; arr[j+1]=temp; } } } System.排序后的数组为:arr[i]); } } } 这段代码的输出结果是: 但是该结果输出的是从小到大,显然不符合我的期望。 package cn.pratice.simple; import java.util.Arrays; }; arr[i]); } Arrays.sort(arr); arr[i]); } } } 回到正题,那么我们如何将其变为降序?实现代码如下(还是复用现有的轮子) package cn.pratice.simple; import java.util.Comparator; BubbleSort { main(String[] args) { Integer[] array = new Integer[] { }; java.util.Arrays.sort(array,new Comparator<Integer>() { int compare(Integer o1,Integer o2) { return o2 - o1; } }); 0; i < array.length; i++) { Integer integer = array[i]; System.integer:" + integer); } } } 我们再来看看选择排序的例子: long startTime = System.currentTimeMillis(); 获取开始时间 int[] arr = new int[] { }; System.交换前0; i < arr.length - 1; i++) { int k = i; int j = k + 1; j < arr.length; j++) { if(arr[j] < arr[k]) { k = j; } } if(i!=k) { arr[i]; arr[i] = arr[k]; arr[k] = temp; } } System.交换后:arr[i]); } long endTime = System.currentTimeMillis(); 获取结束时间 System.程序运行时间:" + (endTime - startTime) + ms"); 输出程序运行时间 } } 那么选择排序的原理又是什么呢? 最后比较一下冒泡排序和简单排序的区别(从概念上分析): 选择排序 (编辑:ASP站长网) |