數據結構與算法-選擇排序,插入排序
選擇排序
原理:每次選擇最大的或最小的一個放在最前面後最後面
時間複雜度:O(n^2)
空間複雜度:O(1)
不穩定排序
/**
* 選擇排序
*/
public static void selectSort(int[] list) {
int n = list.length;
for(int i=0;i<n;i++) {
int minIndex = i;
for(int j=i+1;j<n;j++) {
if(list[minIndex]>list[j]) {
minIndex=j;
}
}
int temp = list[minIndex];
list[minIndex]=list[i];
list[i]=temp;
}
}
插入排序
原理:每一輪向前面有序數列中按順序插入一個數
時間複雜度:O(n^2)
空間複雜度:O(1)
穩定排序
/**
* 插入排序
*/
public static void insertSort(int[] list) {
int n = list.length;
for(int i=1;i<n;i++) {
int temp = list[i];
int j=i-1;
for(;j>=0&&temp<list[j];j--) {
list[j+1]=list[j];
}
list[j+1]=temp;
}
}
這兩個沒見到過什麼優化方案,看代碼就應該懂了