冒泡排序:設(shè)待排序的序列中元素個(gè)數(shù)為n,首先比較最后兩個(gè)元素,如果逆序則交換,否則繼續(xù)比較前兩個(gè)。

插入排序:每一步將待排序的元素,插入到前面拍好序的適當(dāng)?shù)奈恢蒙先ィ钡皆厝坎迦霝橹埂?/p>
直接插入排序:當(dāng)?shù)趇個(gè)元素時(shí),前面的i-1個(gè)已經(jīng)排好序,這時(shí),把i插入到前面合適的位置,其后面的元素后移。總的比較次數(shù)和元素比較次數(shù)都是n(n-1) /2;
折半插入排序:一個(gè)順序表中有一個(gè)序列,其中0到i-1是已經(jīng)排好序的元素,則在i插入時(shí),利用折半查找法尋找插入位置。

希爾排序:設(shè)計(jì)一個(gè)步長(zhǎng)序列,在排序時(shí),反向使用步長(zhǎng)序列。設(shè)待排序的n個(gè)元素,取一個(gè)整數(shù)步長(zhǎng)h<n作為間隔,將全部元素分為h個(gè)子序列,將所有距離為h的元素放入同一個(gè)序列,在每一個(gè)子序列中分別施行插入排序,然后減小間隔,直到h為1,將所有元素放在同一個(gè)序列中排序?yàn)橹埂?/p>
直接選擇排序:
1) 在一組元素a[i]~a[n-1]中選擇具有最小關(guān)鍵字的元素。
2)若不是這組元素中的第一個(gè)元素,則將它與這組元素中的第一個(gè)元素交換。
3)在這組元素中,剔除最小的元素,在剩下的a[i+1]~a[n-1]中重復(fù)執(zhí)行1,2步,直到剩余元素只有一個(gè)為止。

快速排序:基于一種分治策略,其思路是取待排序的元素中的某個(gè)元素作為劃分元素,按照該劃分元素的關(guān)鍵字,將整個(gè)序列分為左右兩個(gè)子序列,左側(cè)的子序列中所以元素都小于或等于劃分元素的關(guān)鍵字,右側(cè)子序列元素都大于劃分元素的關(guān)鍵字,兩個(gè)子序列使用同樣的方法劃分,直到所有元素排序完成為止。

歸并排序:
二路歸并:將兩個(gè)有序的序列合并成一個(gè)新的有序序列。

自底向上:從一個(gè),兩個(gè)排序,兩組排序,等等。

自頂向下:把一個(gè)分成兩段,然后再不斷的往下分,最后分到1個(gè),在回退成一組。

堆排序:第一,構(gòu)造堆,插入構(gòu)造,并不斷調(diào)整。
第二種方法,將數(shù)據(jù)元素放入數(shù)組中,并將數(shù)組視為一棵尚未滿足堆性質(zhì)的完全二叉樹(shù),從右往左,反向?qū)哟伪闅v二叉樹(shù)的所有非葉子節(jié)點(diǎn),并對(duì)從小到大的各棵子樹(shù)通過(guò)篩選運(yùn)算使之成為堆。
