java数组排序
一、Arrays.sort()
这是java.util.Arrays工具类提供的方法,默认对数组进行升序排序。
1.Arrays.sort(Object[] o,[int fromIndex,int toIndex]);
- 以上Object可以为:byte,short,int,long,float,double,char,Object。
- fromIndex, toIndex可以指定范围,不包括toIndex。且fromIndex<=toIndex,否则会报异常。
2.Arrays.sort(T[] t,[int fromIndex,int toIndex],Comparator<T>);
- T不可为基本类型。
- Comparator为比较器。
- 例如对一个Integer数组进行降序排列
class MyComparator implements Comparator<Integer> {
@Override
public int compare(Integer i1, Integer i2) {
if (i1 > i2) {
return -1;
} else if (i1 < i2) {
return 1;
} else {
return 0;
}
}
}
@Test
public void testArray() {
Integer[] iarr = { 6, 5, 8, 20, 35, 1, 19, 38, 16, 3, 8 };
System.out.println("before sort:" + Arrays.toString(iarr));
MyComparator myComparator = new MyComparator();
Arrays.sort(iarr, myComparator);
System.out.println("after sort:" + Arrays.toString(iarr));
}
二、冒泡排序
相邻两个数比较大小。
外层循环arr.length - 1次;
内层循环随着外层循环的变化而变化:arr.length - 1 - i;
基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
public int[] sort1(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}