原创 基數排序

基數排序 基於桶式排序,將要排序的數字一位一位的比較,經歷多次桶式排序,得出最終的序列 如果要排序的元素可以分成多位,並且每一位都在一個固定的範圍內,則可以用這種排序方法,如對10進制數字的排序 有數字23,35,9,73,3,

原创 桶式排序

簡單桶式排序 有限個數字m,每個數字的大小都在1與n之間,則我們可以假設有n個桶,遍歷m個數字,將其存入對應的桶中(如數字的值爲3,就存入3號桶,桶的值對應存入數字的個數 桶號 1 2 3 4 5 計數 1 1 2 0 1

原创 選擇排序—簡單選擇排序

簡單選擇排序 在要排序的一組數中,選出最小的數與第一個位置的數交換;然後再剩下的數再找最小的與第二個位置的數交換,如此循環到倒數第二個數和最後一個數比較爲止。 排序流程 首先從原始數組中選擇最小的1個數據,將其和位於第1個位置的數

原创 歸併排序

歸併排序 歸併(Merge)排序法是將兩個(或兩個以上)有序集合合併成一個新的有序表,即把待排序序列分爲若干個子序列,每個子序列是有序的。然後再把有序子序列合併爲一個有序序列。 合併過程 設r[i…n]由兩個有序子表r[i…m]和r

原创 數據結構-單鏈表

單鏈表 線性表的鏈式存儲結構的特點是用一組任意的存儲單元存儲線性表的數據元素(這組存儲單元可以是連續的,也可以是不連續的)。對於每個節點來說,除了存儲其本身的信息(數據值)之外,還需存儲一個指示其直接後繼的結點的引用。存儲數據元素信息的部

原创 排序算法總覽

1)插入排序(直接插入排序、希爾排序) 2)交換排序(冒泡排序、快速排序) 3)選擇排序(直接選擇排序、堆排序) 4)歸併排序 5)分配排序(基數排序) 所需輔助空間最多:歸併排序 所需輔助空間最少:堆排序 平均速度最快:快

原创 插入排序-希爾排序

Shell排序算法嚴格來說基於插入排序的思想,其又稱爲希爾排序或者縮小增量排序。 基本思想: 先將整個待排序的記錄序列分割成爲若干子序列分別進行直接插入排序,待整個序列中的記錄“基本有序”時,再對全體記錄進行依次直接插入排序。 排序流

原创 數據結構—單鏈表

單鏈表 線性表的鏈式存儲結構的特點是用一組任意的存儲單元存儲線性表的數據元素(這組存儲單元可以是連續的,也可以是不連續的)。對於每個節點來說,除了存儲其本身的信息(數據值)之外,還需存儲一個指示其直接後繼的結點的引用。存儲數據元素信息的部

原创 選擇排序—堆排序

堆排序是一種樹形選擇排序,是對直接選擇排序的有效改進。 基本思想 堆的定義如下:具有n個元素的序列(k1,k2,…,kn),當且僅當滿足 時稱之爲堆。由堆的定義可以看出,堆頂元素(即第一個元素)必爲最小項(小頂堆)。 若以一維數組存