十大經典排序

2021-10-08 09:29:26 字數 1758 閱讀 3540

每一次比較完就要立即交換

比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。

對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。

這步做完後,最後的元素會是最大的數。

針對所有的元素重複以上的步驟,除了最後乙個。

持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

比較完所有的元素,只交換需要交換的兩個元素,減少交換次數

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置

再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。

重複第二步,直到所有元素均排序完畢。

往排好序的序列裡插入

將第一待排序序列第乙個元素看做乙個有序序列,把第二個元素到最後乙個元素當成是未排序序列。

從頭到尾依次掃瞄未排序序列,將掃瞄到的每個元素插入有序序列的適當位置(如果待插入的元素與有序序列中的某個元素相等,則將待插入元素插入到相等元素的後面。)

第一次把相距len/2的元素進行比較並交換,接著把len/4的元素進行比較並交換

選擇乙個增量序列 t1,t2,……,tk,其中 ti > tj, tk = 1;

按增量序列個數 k,對序列進行 k 趟排序;

每趟排序,根據對應的增量 ti,將待排序列分割成若干長度為 m 的子串行,分別對各子表進行直接插入排序。僅增量因子為 1 時,整個序列作為乙個表來處理,表長度即為整個序列的長度。

新建乙個序列,用雙指標往裡邊插資料

申請空間,使其大小為兩個已經排序序列之和,該空間用來存放合併後的序列;

設定兩個指標,最初位置分別為兩個已經排序序列的起始位置;

比較兩個指標所指向的元素,選擇相對小的元素放入到合併空間,並移動指標到下一位置;

重複步驟 3 直到某一指標達到序列尾;將另一串行剩下的所有元素直接複製到合併序列尾。

從數列中挑出乙個元素,稱為 「基準」(pivot);

重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面(相同的數可以到任一邊)。

在這個分割槽退出之後,該基準就處於數列的中間位置。這個稱為分割槽(partition)操作;

遞迴地(recursive)把小於基準值元素的子數列和大於基準值元素的子數列排序;

建立乙個堆 h[0……n-1];

把堆首(最大值)和堆尾互換;

把堆的尺寸縮小 1,並呼叫 shift_down(0),目的是把新的陣列頂端資料調整到相應位置;重複步驟 2,直到堆的尺寸為 1。

重複元素多

花o(n)的時間掃瞄一下整個序列 a,獲取最小值 min 和最大值 max

開闢一塊新的空間建立新的陣列 b,長度為 ( max - min + 1)

陣列 b 中 index 的元素記錄的值是 a 中某元素出現的次數

最後輸出目標整數序列,具體的邏輯是遍歷陣列 b,輸出相應元素以及對應的個數

設定固定數量的空桶。

把資料放到對應的桶中。

對每個不為空的桶中資料進行排序。

拼接不為空的桶中資料,得到結果

將所有待比較數值(正整數)統一為同樣的數字長度,數字較短的數前面補零

從最低位開始,依次進行一次排序

從最低位排序一直到最高位排序完成以後, 數列就變成乙個有序序列

十大經典排序c

插入排序 選擇排序 歸併查詢 非比較類排序 通過比較來決定元素間的相對次序。不需要額外分配空間。思路1.第一層迴圈,n 1次迭代。兩個元素,只需對調一次,依次類推 2.第二層迴圈,兩兩比較 可以從左往右把最大值放到後面,也可以從右往左把最小值放到前面 void bubblesort vector i...

十大經典排序演算法

載自 排序演算法是 資料結構與演算法 中最基本的演算法之一。排序演算法可以分為內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。常見的內部排序演算法有 插入排序 希爾排序 選擇排序 氣泡排序 歸併排序 快速排...

十大經典排序演算法

不穩定排序種類為4種 快速排序 核心思想是partition操作 二分法分而治之 平均時間複雜度nlogn 希爾排序 高階版的插入排序,先把間隔較遠的子串行排序,最後間隔為1時,等同於插入排序 插入排序在序列有序時,時間複雜度常數級,所以先讓子串行總體有序,能有效降低時間複雜度 平均時間複雜度n 1...