1.冒泡排序
冒泡排序只會操作相鄰的兩個數(shù)據(jù)鸯绿。每次冒泡操作都會對相鄰的兩個元素進(jìn)行比較,看是否滿足大小關(guān)系要求。如果不滿足就讓它倆互換茅逮。一次冒泡會讓至少一個元素移動到它應(yīng)該在的位置巧涧,重復(fù) n 次薯蝎,就完成了 n 個數(shù)據(jù)的排序工作。
2.插入排序
將數(shù)組分為兩個區(qū)間谤绳,已排序區(qū)間 和 未排序區(qū)間占锯。初始已排序區(qū)間只有一個元素,就是數(shù)組的第一個元素缩筛。插入算法的核心思想是取未排序區(qū)間中的元素消略,在已排序區(qū)間中找到合適的插入位置將其插入,并保證已排序區(qū)間數(shù)據(jù)一直有序瞎抛。重復(fù)這個過程艺演,直到未排序區(qū)間中元素為空,算法結(jié)束桐臊。
3.選擇排序
選擇排序算法的實(shí)現(xiàn)思路有點(diǎn)類似插入排序胎撤,也分已排序區(qū)間和未排序區(qū)間。但是選擇排序每次會從未排序區(qū)間中找到最小的元素断凶,將其放到已排序區(qū)間的末尾伤提。
4.歸并排序
如果要排序一個數(shù)組從中間分成前后兩部分,然后對前后兩部分分別排序懒浮,再將排好序的兩部分合并在一起飘弧,這樣整個數(shù)組就有序了。
5.快速排序
快排的思想是這樣的:如果要排序數(shù)組中下標(biāo)從 p 到 r 之間的一組數(shù)據(jù)砚著,我們選擇 p 到 r 之間的任意一個數(shù)據(jù)作為 pivot(分區(qū)點(diǎn))次伶。
我們遍歷 p 到 r 之間的數(shù)據(jù),將小于 pivot 的放到左邊稽穆,將大于 pivot 的放到右邊冠王,將 pivot 放到中間。經(jīng)過這一步驟之后舌镶,數(shù)組 p 到 r 之間的數(shù)據(jù)就被分成了三個部分柱彻,前面 p 到 q-1 之間都是小于 pivot 的豪娜,中間是 pivot,后面的 q+1 到 r 之間是大于 pivot 的哟楷。
根據(jù)分治瘤载、遞歸的處理思想,我們可以用遞歸排序下標(biāo)從 p 到 q-1 之間的數(shù)據(jù)和下標(biāo)從 q+1 到 r 之間的數(shù)據(jù)卖擅,直到區(qū)間縮小為 1鸣奔,就說明所有的數(shù)據(jù)都有序了。
摘抄自極客時間 數(shù)據(jù)結(jié)構(gòu)算法之美