常用資料演算法的理解

2021-10-06 18:39:44 字數 1976 閱讀 1782

從第乙個數開始,相鄰元素兩兩對比,小的數放前面。(每迴圈一次,最後乙個數都會被確定下來,為每輪的最大數)

從第乙個數開始,迴圈一圈找最小的數交換位置。(每迴圈一圈,第乙個數都會被確定下來,為每輪最小的值)

從第二個數開始,跟前乙個數比較,若比前乙個數小,則交換位置,接著跟前乙個數比較,直到比前乙個數大為止。(從第一張開始整理撲克牌,小的往前插)(可能會出現乙個數從最後比較到最前面,比較費時)

希爾排序屬於插入類排序,是將整個有序序列分割成若干個小的子串行分別進行插入排序。

排序過程:先取乙個正整數d1優點:當n值很大時,資料項每一趟排序需要移動的個數很少,但資料項的距離很長;當n值減小時,每一趟需要移動的資料增多,此時已經接近於它們排序後的最終位置。

希爾分析:

希爾排序是按照不同步長對元素進行插入排序,當剛開始元素很無序的時候,步長最大,所以插入排序的元素個數很少,速度很快;當元素基本有序了,步長很小,插入排序對於有序的序列效率很高。所以,希爾排序的時間複雜度會比o(n^2)好一些。

歸併排序有兩種實現方法:自上而下的遞迴;自下而上的迭代。下面講遞迴法:

將原陣列用二分法一直分到兩個數為一組,然後通過比較將較小的數放到前面(通過乙個中間陣列排序);然後一層層向上排序。

(就是兩個數比較進行排序,然後兩組(四個數)進行比較排序,然後兩組(八個數)進行比較排序…)

快速排序思想:先找到乙個基準點(一般指數組的中部),然後陣列被該基準點分為兩部分,依次與該基準點資料比較,如果比它小,放左邊;反之,放右邊。 左右分別用乙個空陣列去儲存比較後的資料。最後遞迴執行上述操作,直到陣列長度<=1。

特點:快速,常用。缺點是需要另外宣告兩個陣列,浪費了記憶體空間資源。

快速排序時最快的排序演算法。

快速排序原理:

(1)、定義乙個基準元素base(我這裡定義最左邊的元素定位基準元素)

(2)、定義兩個變數i和j

(3)、j先從右向左遍歷,找到第乙個比base小的數就停止。

(4)、i從左往右遍歷,找到第乙個比base大的數就停止。

(5)、如果i和j不相等,交換i和j指向的元素。

(6)、直到i和j指向同一元素,將這個元素與基準元素交換

(7)、遞迴求解

將待排序的序列構造成乙個大頂堆。此時,這個序列最大值就是堆頂的根節點。將其與陣列末尾元素進行交換,此時末尾元素就是最大值,然後將剩餘的n-1個序列重新構造成乙個堆,這樣就可以得到n-1個元素的次大值。如此反覆執行,便能得到乙個有序序列了。

堆排序的時間複雜度是o(n log n)

空間複雜度為o(1)

常用演算法的理解

1.快速排序 思想 基於分治的思想,將陣列劃分成兩個部分,再對每個部分進行排序。怎樣做到將陣列劃分成兩個部分呢?首先在選中乙個基點,假如選擇array r 最右邊元素 為基點,i和j分別從左和右向陣列內部掃瞄,首先從左邊i處開始,按照左邊的元素都比基點小,右邊的元素都比基點大的原則,如有違背,則調換...

資料結構之常用排序演算法理解

1.選擇排序 遍歷陣列,每一次遍歷找出乙個最小值放在陣列前面,步驟如下 將currmin設為a 0 遍歷a 1 a n 1 只要a i 小於a 0 進行a 0 與a i 的交換 將currmin設為a 1 遍歷a 2 a n 1 最後乙個currmin為a n 2 比較a n 2 與a n 1 如下...

資料探勘的常用演算法

在大資料時代,資料探勘是最關鍵的工作。大資料的挖掘是從海量 不完全的 有雜訊的 模糊的 隨機的大型資料庫中發現隱含在其中有價值的 潛在有用的資訊和知識的過程,也是一種決策支援過程。其主要基於人工智慧,機器學習,模式學習,統計學等。通過對大資料高度自動化地分析,做出歸納性的推理,從中挖掘出潛在的模式,...