常見的排序:選擇排序,直接插入排序,冒泡排序,堆排序,快速排序,歸併排序
接下來的幾篇博客,我將挨個介紹每種排序算法的思想,實現,空間複雜度,時間複雜度以及每種之間的異同點
一、選擇排序
1.思想:給定一組記錄,第一輪遍歷得到最小的記錄,將該記錄與第一個記錄的位置進行互換,接着將不包含第一個記錄的所有記錄遍歷再得到一個最小值,該記錄與第二個位置的記錄互換,重複該過程,知道進行比較的記錄只剩一個爲止。
2.代碼實現:
import java.util.Arrays;
public class SeleceSort {
public static void selectSort(int []array,int n){
int min;//記錄最小值的位置
int i,j;
for(i=0;i<n-1;i++){
min=i;//將每次遍歷的第一個數當做最小值
for(j=i+1;j<n;j++){
if(array[j]<array[min]) min=j;
}
//從for循環出來min是最小值的位置
//如果min=i,min位置沒變,如果不等,交換位置,讓min始終是最小值的位置
if(min!=i){
int t=0;
t=array[min];
array[min]=array[i];
array[i]=t;
}
}
}
public static void main(String[] args){
int array[]={4,7,3,2,8,6,9,5};
selectSort(array,array.length);
System.out.println(Arrays.toString(array));
}
}
3空間複雜度:O(1)
4.平均.時間複雜度:O(n^2)
5.是一種不穩定的排序算法,排序個數少的時候效率高