原创 十大排序算法——桶排序(C語言)

桶排序(穩定的排序算法) 桶排序 (Bucket sort)或所謂的箱排序,是一個排序算法,工作的原理是將數組分到有限數量的桶子裏。每個桶子再個別排序(有可能再使用別的排序算法或是以遞歸方式繼續使用桶排序進行排序)。 基本原理 把

原创 十大排序算法——歸併排序(C語言)

歸併排序 歸併排序(MERGE-SORT)是建立在歸併操作上的一種有效的排序算法,該算法是採用分治法(Divide and Conquer)的一個非常典型的應用。歸併排序是一種穩定的排序方法。 該算法採用經典的分治(divide-

原创 十大排序算法——計數排序(C語言)

計數排序(適用於在一定範圍內的整數排序,取值範圍不是很大的情況下,效率快過時間複雜度爲O(nlogn)的排序) 計數排序是一個非基於比較的排序算法,該算法於1954年由 Harold H. Seward 提出。它的優勢在於在對一定

原创 十大排序算法----堆排序(最後一個非葉子節點的序號是n/2-1的推理)

堆排序(最後一個非葉子節點的序號是n/2-1的推理) 可以分兩種情形考慮: 1.堆的最後一個非葉子節點若只有左子節點 2.堆的最後一個非葉子節點有左右兩個子節點 堆的定義: 大頂堆:arr[i] >= arr[2i+1] && a

原创 十大排序算法——堆排序(C語言)

文章目錄堆排序堆排序基本思想基本步驟大頂堆法小頂堆法參考文獻: 堆排序 百度百科介紹: 堆排序(英語:Heapsort)是指利用堆這種數據結構所設計的一種排序算法。堆是一個近似完全二叉樹的結構,並同時滿足堆積的性質:即子結點的鍵值

原创 十大排序算法——希爾排序(元素交換法和數組元素移動法C語言)

希爾排序(元素交換法和數組元素移動法) 希爾排序(Shell’s Sort)是插入排序的一種又稱“縮小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一種更高效的改進版本。希爾排序是非穩定排

原创 十大排序算法——快速排序法【挖坑法、左右指針法、前後指針法和優化方式三路快排】(C語言)

文章目錄快速排序法基本思想實施基本步驟選擇基準值(關鍵字)key方式1.取頭尾位置2.隨機選取基準法3.三數取中法三種基準分治法1.挖坑法2.左右指針法3.前後指針法三種優化方式1.對於基準的選擇按情況而定(取頭尾位置、隨機選取基

原创 swap()函數,C語言中的使用

swap()函數 #include<stdio.h> #include<stdlib.h> //數值交換函數 void swap(int *a,int *b) { int temp; temp = *a;

原创 產生隨機數(rand()函數和srand()函數)的含義

rand()函數(產生隨機數) 在頭文件: #include<stdlib.h> 功能:返回一個[0,RAND_MAX]間的隨機整數。其中RAND_MAX是定義在stdlib.h頭文件中的一個常量。 srand()函數 功能:初始

原创 mid=(left+right)>>1什麼含義

mid=(left+right)>>1的含義 右移運算符>>,運算結果正好能對應一個整數的二分之一值,這就正好能代替數學上的除2運算,但是比除2運算要快。 mid=(left+right)>>1相當於mid=(left+right

原创 十大排序算法——選擇排序法

選擇排序法 原理: 假設首個元素爲最大值,用i,j,k三個變量表示數組下標,i表示當前元素下標,j表示找到最大值或者最小值的元素下標,k表示每次循環後的最大值或者最小值的下標 思路: 假設首個元素爲最大值或者最小值與其後的其他數值

原创 十大排序算法——二分插入排序法(C語言)

二分插入排序法 直接插入排序方法:直接插入排序法 比較着看可以加深印象 原理 按由大到小來說 同直接插入排序一樣,也是分有序序列和無序序列,將待排序的無序序列插入到有序序列當中。 二分插入是把待插入數值先和有序序列的中間數值進行比

原创 十大排序算法——插入排序法(C語言)

插入排序法 原理: 插入排序對排序的序列分爲:有序序列和無序序列兩部分。 通過構建有序序列對無序序列進行排序,假設第一個數字爲有序序列,其後的數字爲無序序列,在無序序列中取一個數字與有序序列中的數字進行比較,找到合適的位置插入到有

原创 n=sizeof(a)/sizeof(int)的含義(C語言)

sizeof(a)/sizeof(int)含義 sizeof是求字節數的函數,計算小括號裏的變量佔內存多少單元,計算單位是字節數。。 a如果是int,float,long就是4個字節,short就是2個字節,char就是1個字節,

原创 十大排序算法——冒泡法

冒泡法 定義:它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果順序(如從大到小、首字母從Z到A)錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。這個過程類似於水泡向