1.插入排序;2.氣泡排序;3.選擇排序;4.快速排序;5.希爾排序;6.歸併排序;7.堆排除;8.桶排序
插入排序,氣泡排序,選擇排序,快速排序基礎。
前三種都是o2 如果有100個資料,理論上最壞執行100*100 次
堆排序就是樹,將雜亂無章的生成一顆樹,就是排序
桶排序是最高的,但是其不能排浮點型別也不能是負數,為o一次方;
桶排序就是分成 0 1 2 — 9 個桶,分別按個位個十位進行排序, 結果從上到下自然就是順序的,但是其消耗的記憶體也是最大的,比如,如果有100個資料就需要10個陣列 每個數字100 個空間 。桶排序如果排列負數可以將所有樹都加上乙個正數,指導所有的數都大於零,排序完之後在減回來即可。(典型的空間換時間)
快速排序是插入排序(把乙個元素插入到乙個有序的序列當中)的乙個變種。以乙個資料為基準,小的放左邊,大的放右邊。一次可以確定這個基準的位置,然後對基準的左邊和右邊的資料進行同樣的方式排序(在左邊和右邊選擇乙個基準,通常就是第乙個數,然後進行分左右即可,以此類推)。(一般面試不會讓現場編,太難了,除錯半天需要)
希爾排序(也是基於插入排序),希爾排序中(如果將乙個從大到小的序列排列成乙個從小到達的序列,此時希爾排序的效率是最高的??? 有誤?) 如果需要排列的序列越逆序則希爾排序的效率越高。希爾排序最差的排序(交換資料的次數)是和插入排序的效率是一樣的。希爾排序中並不是和相鄰的進行比較,而是跨了幾個資料,比如需要排序 8 16 11 5 4 2 7 1 ,將8 除以2得4,每個元素和它的後4個元素進行比較(8和 4 , 16 和 2 .。。 )。 4 2 9 1 8 16 11 5 (大資料一下子就被放後面去了)。同理,4/2=2, (4和 9 ,2 和 1 .。。 ) 4 1 8 2 9 5 11 16 。。。。 (其時間複雜度是乙個範圍)
歸併排序,也是乙個典型得空間換時間排序方法,也叫做分組怕排序,打亂之後重新組合。 8 16 11 5 7 2 9 3 一共8個元素。第一輪把他們分成八個組,每個組元素肯定是排序得,第二輪兩兩合併,然後排序 –> 8 16 5 11 2 7 3 9 第三輪 4個組合, (此時 如果 四個中 是 8 16 5 6 ,則只需要 將5 和 6 和8 比較,不用比較11 ,用兩個指標,由於第二輪得基礎不需要對四個元素進行重新比較) 5 6 8 16 2 3 7 9 最後一輪為所有得8個元素,同樣得比較方式 -> 。。。
八大排序演算法
1.直接插入排序 原理 將陣列分為無序區和有序區兩個區,然後不斷將無序區的第乙個元素按大小順序插入到有序區中去,最終將所有無序區元素都移動到有序區完成排序。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。實現 void insertsort node l,int length void shell ...
八大排序演算法
一 概述 八大排序演算法包括 1 插入排序之直接插入排序 straight insertion sort 2 插入排序之希爾排序 shells sort 3 選擇排序之簡單選擇排序 selection sort 4 選擇排序之堆排序 heap sort 5 交換排序之氣泡排序 bubble sort...
八大排序演算法
排序的定義 輸入 n個數 a1,a2,a3,an 輸出 n個數的排列 a1 a2 a3 an 使得a1 a2 a3 an in place sort 不占用額外記憶體或占用常數的記憶體 插入排序 選擇排序 氣泡排序 堆排序 快速排序。out place sort 歸併排序 計數排序 基數排序 桶排序...