特別聲明:原文來自公眾號:帥地玩編程拙绊,原文鏈接https://mp.weixin.qq.com/s/AGPCfFg7bEiCsa5zNeCi4A
術(shù)語鋪墊
有些人可能不知道什么是穩(wěn)定排序衷畦、原地排序、時間復(fù)雜度、空間復(fù)雜度精钮,我這里先簡單解釋一下:
1、穩(wěn)定排序:如果 a 原本在 b 的前面们衙,且 a == b,排序之后 a 仍然在 b 的前面碱呼,則為穩(wěn)定排序蒙挑。
2、非穩(wěn)定排序:如果 a 原本在 b 的前面愚臀,且 a == b忆蚀,排序之后 a 可能不在 b 的前面,則為非穩(wěn)定排序姑裂。
3馋袜、原地排序:原地排序就是指在排序過程中不申請多余的存儲空間,只利用原來存儲待排數(shù)據(jù)的存儲空間進行比較和交換的數(shù)據(jù)排序舶斧。
4欣鳖、非原地排序:需要利用額外的數(shù)組來輔助排序。
5茴厉、時間復(fù)雜度:一個算法執(zhí)行所消耗的時間泽台。
6、空間復(fù)雜度:運行完一個算法所需的內(nèi)存大小矾缓。
十大排序講解順序
- 選擇排序
- 插入排序
- 冒泡排序
- 非優(yōu)化版本
- 優(yōu)化版本
- 希爾排序
- 歸并排序
- 遞歸式歸并排序
- 非遞歸式歸并排序
- 快速排序
- 堆排序
- 基數(shù)排序
- 非優(yōu)化版本
- 優(yōu)化版本
- 桶排序
- 基數(shù)排序
1怀酷、選擇排序
過程簡單描述:
首先,找到數(shù)組中最小的那個元素嗜闻,其次蜕依,將它和數(shù)組的第一個元素交換位置(如果第一個元素就是最小元素那么它就和自己交換)。其次琉雳,在剩下的元素中找到最小的元素样眠,將它與數(shù)組的第二個元素交換位置。如此往復(fù)咐吼,直到將整個數(shù)組排序吹缔。這種方法我們稱之為選擇排序。
核心:選擇排序的關(guān)鍵點在于:每次篩選出剩余數(shù)組中的最小數(shù)锯茄,將它與剩余數(shù)組的第一個進行位置交換