一、冒泡排序
优缺点:
-
优点:比较简单,空间复杂度较低,是稳定的;
-
缺点:时间复杂度太高,效率慢;
public static int[] sort(int[] arr){
for (int i =0;i<arr.length;i++){
for (int j = 0; j < arr.length-i-1; j++) {
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
return arr;
}
二、选择排序
优缺点:
-
优点:一轮比较只需要换一次位置;
-
缺点:效率慢,不稳定(举个例子5,8,5,2,9 我们知道第一遍选择第一个元素5会和2交换,那么原序列中2个5的相对位置前后顺序就破坏了)
代码:
public static int[] sort(int[] arr){
int len = arr.length;
if(len==0&&len==1){
return arr;
}
for(int i=0;i<len-1;i++){
int min = i;
for(int j=i;j<len;j++){
if(arr[j]<arr[min]){
min = j;
}
}
if(min!= i){
int temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
return arr;
}
三、冒泡排序和选择排序的区别
-
冒泡排序是比较相邻位置的两个数,而选择排序是按顺序比较,找最大值或者最小值;
-
冒泡排序每一轮比较后,位置不对都需要换位置,选择排序每一轮比较都只需要换一次位置;
-
冒泡排序是通过数去找位置,选择排序是给定位置去找数;