選擇排序與冒泡排序的特點與區別
++++++++++++++++++++++++++++++++++++++++++++++
| 選擇排序 | 這一種簡單的排序方法,它的基本思想是: |
| 特點 | 選擇排序的平均時間復雜度是O(n²)的。 |
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 for(int i =0;i<arr.length-1;i++){ //遍歷第n趟 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}
二分法
1 /* 2 為了提高查找效率,可使用折半查找的方式,注意:這種查找只對有序的數組有效。 3 這種方式也成為二分查找法。 4 */ 5 public static int halfSeach(int[] arr,int key) 6 { 7 int min,mid,max; 8 min = 0; 9 max = arr.length-1; 10 mid = (max+min)/2; 11 12 while(arr[mid]!=key) 13 { 14 if(key>arr[mid]) 15 min = mid + 1; 16 else if(key<arr[mid]) 17 max = mid - 1; 18 19 if(min>max) 20 return -1; 21 22 mid = (max+min)/2; 23 } 24 return mid; 25 }
陌陌說:選擇排序(包含shaker排序/堆排序)和冒泡排序都屬於交換排序的一種。
計算機的一些排序算法:插入排序 、冒泡排序 、選擇排序 、快速排序 、堆排序 、歸並排序、基數排序、希爾排序
【每個排序算法都有一個 平均時間復雜度】
