標籤:bsp https 快速 結束 希爾排序 highlight length isp 包含
選擇排序與冒泡排序的特點與區別
++++++++++++++++++++++++++++++++++++++++++++++
| 選擇排序 |
這一種簡單的排序方法,它的基本思想是: R[n] 第一次從R[0]~R[n-1]中選取最小值,與R[0]交換; 第二次從R[1]~R[n-1]中選取最小值,與R[1]交換; ...., 第i次從R[i-1]~R[n-1]中選取最小值,與R[i-1]交換; ....., 第n-1次從R[n-2]~R[n-1]中選取最小值,與R[n-2]交換; 總共通過n-1次,得到一個按排序碼從小到大排列的有序序列. |
| 特點 |
選擇排序的平均時間複雜度是O(n2)的。 |
1 for(int i = 0;i<arr.length;i++){ 2 3 for(int j= 1 ; j<arr.length;j++){ 4 if(arr[j-1]>arr[j]){ 5 int temp = arr[j]; 6 arr[j] = arr[j-1]; 7 arr[j-1] = temp; 8 9 }10 }11}
+++++++++++++++++++++++++++++++++++++++++++++++
| 冒泡排序 |
依次比較相鄰的兩個數,將小數放在前面,大數放在後面。 即在第一趟: 首先比較第1個和第2個數,將小數放前,大數放後; 然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後; 至此第一趟結束,將最大的數放到了最後。 在第二趟: 仍從第一對數開始比較(因為可能由於第2個數和第3個數的交換,使得第1個數不再小於第2個數),將小數放前,大數放後; 一直比較到倒數第二個數(倒數第一的位置上已經是最大的); 第二趟結束,在倒數第二的位置上得到一個新的最大數(其實在整個數列中是第二大的數)。 如此下去,重複以上過程,直至最終完成排序。 |
| 特點 |
冒泡排序的平均時間複雜度與插入排序相同,也是平方級的,但也是非常容易實現的演算法。 |
1 for(int i =0;i<arr.length-1;i++){ //從第一個開始遍曆 2 3 for(int j=0;j<arr.length-1-i;j++){ // 4 5 if(arr[j]>arr[j+1]){ //前面的數比後面的數大 6 int temp = arr[j]; //然後進行交換,將大的往後排 7 arr[j] = arr[j+1]; 8 arr[j+1] = temp; 9 }10 } 11}
陌陌說:選擇排序(包含shaker排序/堆排序)和冒泡排序都屬於交換排序的一種。
電腦的一些排序演算法:插入排序 、冒泡排序 、選擇排序 、快速排序 、堆排序 、歸併排序、基數排序、希爾排序
【每個排序演算法都有一個 平均時間複雜度】
java 選擇排序與冒泡排序