一句話概括十大排序算法的思想
冒泡排序:兩個相鄰元素比較,如果順序相反則交換位置。
插入排序:假設前面的數字都已經排好序,再向有序數組中插入一個元素,使得插入後的數組有序。
選擇排序:選擇未排序數組中最大或者最小的數組放在前面。
希爾排序:按照增量不同,進行多次插入排序。
歸併排序:將兩個有序的數組合併成一個有序的數組,運用分治算法的思想解決排序問題。
堆排序:將數組看成一個堆,運用堆的性質完成排序。
快速排序:每次選擇數組內第一個數,將大於、小於它的數分別放到它的左邊、右邊。
計數排序:用哈希表記錄數字出現的次數,再按順序輸出。
基數排序:從低位到高位利用計數排序的思想進行排序。
桶排序:用若干個區間爲一定範圍的桶,將數放入對於桶內,當所有桶的數字不大於一個時停止。
排序算法的複雜度
排序算法 | 時間複雜度 | 空間複雜度 |
---|---|---|
冒泡排序 | O(n^2) | O(1) |
插入排序 | O(n^2) | O(1) |
選擇排序 | O(n^2) | O(1) |
希爾排序 | O(1) | |
歸併排序 | O(n*logn) | O(n) |
堆排序 | O(n*logn) | O(1) |
快速排序 | O(n*logn) | O(logn) |
計數排序 | O(n+k) | O(n) |
基數排序 | O(n*c) | O(n) |
桶排序 | O(n*(logn-logm)) | O(n+m) |
排序算法的穩定性
排序算法的穩定性是指相等值的順序在排序算法運行之後是否會發生變化,如果不會發生變化則爲穩定排序算法,否則爲非穩定排序算法。
按照排序算法的穩定性劃分,屬於穩定排序算法的有冒泡排序,插入排序,歸併排序,計數排序,基數排序,桶排序。非穩定排序算法的有選擇排序,希爾排序,堆排序,快速排序。