排序演算法概述

2021-09-20 14:49:58 字數 1170 閱讀 2391

提到排序演算法我們要知道兩個經常提到的概念:

(1)排序演算法的穩定性:所謂「穩定性」是 指,在待排序陣列出現的兩個相同的元素,排序之後相對維持保持不變。比如:待排序陣列為arr = ,排序之後元素變為arr_new = ,並且arr_new中的第乙個是arr中的第乙個1,arr_new中的第二個1是arr中的第二個1,這是我們就說這種排序時穩定的。

(2)原地排序:所謂原地排序是指,不申請多餘的空間來輔助完成排序演算法,而是在原來的待排序的資料之上直接進行比較,交換,移動等操作

演算法思想:快速排序時這樣的一種排序,選取陣列中的第乙個元素arr[0]作為依據,遍歷一遍陣列後,使得陣列中的第乙個元素進入正確的位置,即在該位置左面的元素均小於等於arr[0],在該位置右面的元素均大於等於arr[0]。然後,在對該位置左面和右面的元素分別進行快速排序,如此一來完成整個陣列的排序。

演算法原理:氣泡排序是經過n-1趟子排序完成的,第 i 趟子排序從第1個數至第 n-i+1 個數,若第 i 個數比第 i+1 個數大,則交換這兩個數,實際上這樣經過 i 次子排序就使得 第1個數至第 n-i +1個數之間最大的數交換到了n-i+1 的位置上了。實際上氣泡排序時可以優化的,那就是當第 i 次子排序並沒有發生元素的交換時,就說明陣列已經排好序了,以後的子排序就不用做了。

演算法原理:所謂選擇排序經過 n-1 次選擇,當進行第 i 次選擇時,是從第1個元素到第 n-i+1 的元素中選擇最大的元素和第 n-i+1 個位置的元素交換,這樣做比如第1 次選擇使得最大的元素到了陣列的最後乙個位置。注意哦,在選擇排序中每次選擇時只進行一次資料的交換。

演算法原理:將待排序的陣列分為:有序區 和 無序區。然後每次從無序區取出第乙個資料插入到有序區的正確位置,最終完成排序。

演算法思路:所謂的堆排序是利用完全二叉樹的思想實現的。首先應該提到的是最大堆,在最大堆中(完全二叉樹二叉樹)中每個父節點都大於等於兩個兒子節點的值,這時候很明 顯堆頂是元素的最大值,然後把堆頂元素和堆中最後乙個元素(分層遍歷的節點編號最大的元素)交換,這樣最大值就落到了陣列的arr[n-1]的位置,然後 把前n-1元素繼續按照上面的方式處理,如此進行n-1次就完成堆排序。

演算法原理:歸併排序的思想是分治,將乙個帶排序的陣列分成兩個較小的陣列,然後分別進行排序,組後將兩個排好序 的較小的陣列合併起來,就得到了原來陣列的排序後的結果。應該注意的是這種將兩個排好序的陣列合併有乙個較好的演算法,時間複雜度是o(n1+n2)的。 n1、n2分別是兩個小陣列的長度。

排序演算法概述

所謂排序,就是使一串記錄,按照其中的某個或某些關鍵字的大小,遞增或遞減的排列起來的操作。不穩定排序演算法可能會在相等的鍵值中改變紀錄的相對次序,但是穩定排序演算法從來不會如此。排序大概分為四類 交換排序 包括氣泡排序,快速排序。選擇排序 包括直接選擇排序,堆排序。插入排序 包括直接插入排序,希爾排序...

排序演算法概述

所謂排序,就是根據排序碼的遞增或者遞減順序把資料元素依次排列起來,使一組任意排列的元素變為一組按其排序碼線性有序的元素。本文將介紹八種最為經典常用的內部排序演算法,包括插入排序 直接插入排序,希爾排序 選擇排序 直接選擇排序,堆排序 交換排序 氣泡排序,快速排序 歸併排序 分配排序 基數排序 實際上...

排序演算法 一 概述

排序是程式開發中一種非常常見的操作,對一組任意的資料元素 或記錄 經過排序操作後,就可以把他們變成一組按關鍵字排序的有序佇列。對於排序演算法從以下幾點去衡量演算法的優劣 時間複雜度,所謂時間複雜度就是將一組數從無序到有序所花費的時間,通常使用乙個量級去衡量,比如o n 或者 o n n 空間複雜度,...