java数组排序
在java中,数组排序是一个很基础的问题,也是面试中经常会被问起的一个问题。下面介绍两种数组排序方法。
选择排序
count = 0;
int[] dest1= {9,5,3,4,2,6};
for (int i = 0; i < dest1.length; i++) {
for (int j = 0; j < dest1.length; j++) {
if(dest1[j] < dest1[i]) {
int t = dest1[j];
dest1[j] = dest1[i];
dest1[i] = t;
}
count++;
}
}
System.out.println(count);
结果为:9, 6, 5, 4, 3, 2 2,总共循环了36次。
冒泡排序
count = 0;
int[] dest2= {9,5,3,4,2,6};
for (int i = 0; i < dest2.length - 1; i++) {
for (int j = 0; j < dest2.length - 1; j++) {
if(dest2[j] < dest2[j + 1]) {
int t = dest2[j];
dest2[j] = dest2[j + 1];
dest2[j + 1] = t;
}
count++;
}
}
System.out.println(count);
结果为:9, 6, 5, 4, 3, 2 2,总共循环了25次。因最后一次不需要比较,所以比选择排序的循环次数要少。
int[] dest= {9,5,3,4,2,6};
int count = 0;
for (int i=0; i<length; i++)
for (int j=i; j>0 &&
((Comparable) dest[j-1]).compareTo(dest[j])>0; j--) {
//swap(dest, j, j-1);
int t = dest[j];
dest[j] = dest[j-1];
dest[j-1] = t;
count++;
}
System.out.println(count);
结果为:2, 3, 4, 5, 6, 9,总共循环了10次。最后这种,属于冒泡排序,在第二层循环中的长度为第一层循环的i值,这样循环次数是最少的。
以上,介绍了数组排序的选择排序和冒泡排序,其中第三种方式次数是最少的,也是最推荐使用的。