二維數組冒泡排序
一維數組冒泡排序:
int[] arr = new int[]{5,1,8,2,9,4,6,7,3,6,54};
int temp;
for(int i = 0; i < arr.length; i++){
for(int j = i + 1; j < arr.length; j++){
if(arr[i] > arr[j]){
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
二維數組冒泡排序:
(1).轉化為一維
int[][] arr2 = {{9,3,5},{2,7,4},{8,1,6}};
long s = System.nanoTime();
for(int i = 0; i < arr2.length; i++){
for(int j = 0 ; j < arr2[i].length; j++){
for(int ii = i*arr2[i].length+j+1; ii < arr2.length*arr2[i].length; ii++){
if(arr2[i][j] > arr2[ii/3][ii-(ii/3)*arr2[i].length]){
temp = arr2[i][j];
arr2[i][j] = arr2[ii/3][ii-(ii/3)*arr2[i].length];
arr2[ii/3][ii-(ii/3)*arr2[i].length] = temp;
}
}
}
}
long e = System.nanoTime();
System.out.println("程序的運行時間是:"+(e-s)); //程序的運行時間是:6586
(2).直接二維排序
long s = System.nanoTime();
for(int i = 0; i < arr2.length; i++){
for(int j = 0 ; j < arr2[i].length; j++){
for(int ii = 0; ii < arr2.length; ii++){
for(int jj = 0; jj < arr2[ii].length; jj++){
if(arr2[i][j] < arr2[ii][jj]){
temp = arr2[ii][jj];
arr2[ii][jj] = arr2[i][j];
arr2[i][j] = temp;
}
}
}
}
}
long e = System.nanoTime();
System.out.println("程序的運行時間是:"+(e-s));//程序的運行時間是:7494
通過時間比較可得出:二維數組冒泡排序時轉化為一維數組較快。