java数组排序

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值,这样循环次数是最少的。

以上,介绍了数组排序的选择排序和冒泡排序,其中第三种方式次数是最少的,也是最推荐使用的。

猜你喜欢

转载自blog.csdn.net/qq_32617311/article/details/82084788