根据9000长度的 随机数组比较:
冒泡排序花费时间96ms
选择排序花费时间130ms
代码如下:
package testDemo;
import java.util.Arrays;
public class testArraySort {
public static void main(String[] args) {
//数组长度
int length = ;
int[] array = createRandomArray(length);
//打印数组
System.out.println("原数组"+Arrays.toString(array));
//直接排序
/*long start = System.currentTimeMillis();
int[] selectSort = selectSort(array);
long end = System.currentTimeMillis();
System.out.println("选择排序花费时间"+(end-start));
System.out.println("选择排序后的数组"+Arrays.toString(selectSort));*/
//调用冒泡排序
long start1 = System.currentTimeMillis();
int[] bubbleSort = bubbleSort(array);
long end1 = System.currentTimeMillis();
System.out.println("冒泡排序花费时间"+(end1-start1));
System.out.println("冒泡排序后的数组"+Arrays.toString(bubbleSort));
}
public static int[] selectSort(int[] arr){
for(int x=; x<arr.length-; x++){
//为什么y的初始化值是 x+1?因为每一次比较,都用x角标上的元素和下一个元素进 行比较。
for(int y=x+; y<arr.length; y++){
if(arr[x]>arr[y])
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
}
return arr;
}
public static int[] bubbleSort(int[] arr){
for(int x=; x<arr.length-; x++){
for(int y=; y<arr.length-x-; y++){//-x:让每次参与比较的元减。//-1:避免角标越界。
if(arr[y]>arr[y+])
{
int temp = arr[y];
arr[y] = arr[y+];
arr[y+] = temp;
}
}
}
return arr;
}
private static int[] createRandomArray(int length) {
int[] array = new int[length];
for(int i=;i<array.length;i++){
array[i] = (int)(Math.random()*length);
}
return array;
}
}