冒泡排序和插入排序
阿新 • • 發佈:2018-11-29
lan 插入 tails ref for 循環 href targe == 時間
冒泡排序:
1 public static void bubblesort(int[] a, int n) { 2 for(int i = 0; i < n; ++i) { 3 boolean flag = false; 4 for(int j = 0; j < n-i-1; ++j) { 5 if(a[j] > a[j+1]) { 6 int temp = a[j+1]; 7 a[j+1] = a[j];8 a[j] = temp; 9 flag = true; 10 } 11 } 12 if(flag == false) break; 13 } 14 }
插入排序:
1 public static void insertionsort(int[] a,int n) { 2 for(int i = 1; i < n; ++i) { 3 inttemp = a[i]; 4 int j = i - 1; 5 for(; j >= 0; --j ) { 6 if(a[j] > temp) { 7 a[j+1] = a[j]; 8 }else {break;} 9 } 10 a[j+1] = temp; 11 } 12 }
執行效果:
冒泡排序花費時間:196ms 選擇排序花費時間:54ms
我的代碼:
1 public static void insertionsort(int[] a,int n) { 2 for(int i = 1; i < n; i++) { 3 int temp = a[i]; 4 for(int j = i; j > 0; j-- ) { 5 if(a[j-1] > temp) { 6 a[j] = a[j-1]; 7 }else {break;} 8 a[j-1] = temp; 9 } 10 } 11 }
優化:
1、for 循環中 i++ 和 ++i 運行效果一樣,但 ++i 效率更高。https://blog.csdn.net/github_37847975/article/details/77369851
2、第8行賦值放在了第二層循環中,這樣每次比較都要給 a[j-1] 賦值,增加了計算量。
冒泡排序和插入排序