选择排序与冒泡排序的特点与区别
++++++++++++++++++++++++++++++++++++++++++++++
选择排序 | 这一种简单的排序方法,它的基本思想是: |
特点 | 选择排序的平均时间复杂度是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排序/堆排序)和冒泡排序都属于交换排序的一种。
计算机的一些排序算法:插入排序 、冒泡排序 、选择排序 、快速排序 、堆排序 、归并排序、基数排序、希尔排序
【每个排序算法都有一个 平均时间复杂度】