public int compare(Object obj1,Object obj2); 比较其两个参数的顺序。当第一个参数小于,等于或大于第二个参数时,返回负整数,零或正整数。按照一般情况返回1,0,-1,通过这三个值来区分正,负值。当然返回其他的正数, 负数一样可以排序。 1,0,-1的具体含义又怎样的呢? 1表示两个数位置交换,-1表示两个数...
1.插入排序算法 插入排序的基本思想是在遍历数组的过程中,假设在序号 i 之前的元素即 [0..i-1] 都已经排好序,本趟需要找到 i 对应的元素 x 的正确位置 k ,并且在寻找这个位置 k 的过程中逐个将比较过的元素往后移一位,为元素 x “腾位置”,最后将 k 对应的元素值赋为 x ,一般情况下,插入排序的时间...
希尔排序是先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。 基本思想 将待排序数组按照步长gap进行分组,然后将每组的元素利用直接插入排序的方法进行排序;每次再将gap折半减小,循环上述操作;当gap=1时,利用直接插入,完成排序。 ...
希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,...
1.插入排序:直接插入排序,稳定排序,时间复杂度为O(n^2)非递减有序,设置r[0]为哨兵进行n-1趟。 shell排序,不稳定的排序,时间复杂度为O(n^1.3)非递减有序,设置r[0]为哨兵。 2.选择排序:直接选择排序,稳定排序,时间复杂度为O(n^2)非递减有序。
一、什么情况返回-1?0?1? Comparator接口的int compare(T o1, T o2);方法中,o1 和 o2的在排序前集合中的顺序为:o2在o1前面,首先要知道这一点。 以升序排序为例: o1 < o2 时返回 -1; 当o2 > o1 或 o2 = o1,返回0 或 1; ...
public static void main(String args[]) { int a[] = new int[10];for (int i = 0; i <= 5; i++) { a[i] = (int) (Math.random() * 10);//这个地方不能写成(int)Math.random()这是最大的错误 //其他地方乱七八糟的,我就自己写了 } for (int i = 0; i < 5;)...
一趟冒泡排序下来至少会让一个元素排好序(元素排序好的区域相当于有序区,因此冒泡排序中相当于待排序数组分成了两个已排序区间和未排序区间)。因此为了将 n 个元素排好序,需要 n-1 趟冒泡排序(第 n 趟的时候就不需要)。 下面用冒泡排序对这么一组数据4、5、6、3、2、1,从小到大进行排序。第一次排序情况...
例如简一点的冒泡排序,将第一个数字和后面的数字逐个比较大小,如果小于,则互换位置,大于则不动。此时,第一个数为数组中的最大数。然后再将第二个数与后面的数逐个比较,以次类推。示例代码如下: public class Test { public static void main(String[] args) { int [] array = {12,3,...
```java import java.util.Arrays;public class Test2 { public static void main(String[] args) { int[] a = {5, 4, 2, 4, 9, 1};Arrays.sort(a); // 进行排序 for (int i : a) { System.out.print(i);} } } ```2. 冒泡排序法:冒泡排序是一种简单的排序算法,它重复...