算法图解之选择排序
|
假设你的计算机存储了很多乐趣。对于每个乐队,你都记录了其作品被播放的次数。
如果你要将这个列表按播放次数从多到少的顺序排列,从而将你喜欢的乐队排序。该如何做呢? 我第一眼看到这个问题时,想到的是通过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"); 输出程序运行时间
}
}
那么选择排序的原理又是什么呢? 最后比较一下冒泡排序和简单排序的区别(从概念上分析): 选择排序 (编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |




