一
、排序思想
1、排序:排列順序,把一組資料元素的任意序列重新排列成一組按關鍵字排列的有序序列。
2、排序的分類:
(1)儲存位置:內部排序 資料在記憶體中排序,資料量較小。
外部排序 部分排序,資料量太大。
(2)排序演算法(邏輯): 插入排序、選擇排序、交換排序、歸併排序、計數排序。
(3)排序結果:公升序、降序。
3、排序整體思想:
時間複雜度:某個演算法的執行次數。
空間複雜度:臨時儲存位的個數。
穩定性:重複資料在排序前後位置不發生變化則為穩定。
二、直接插入排序法
1、待排序數字、已排序、未排序
2、時間複雜度:o(n^2) 空間複雜度:o(1)
3、思想:把乙個陣列先劃分為已排序好的未排序的部分,從未排序部分獲取乙個關鍵字作為待排序數,從已排序部分找到合適位置
插入這個資料。
4、**如下:
#include//有哨兵位 第一位
void insertsort(int arr, int len)
arr[j + 1] = arr[0]; }}
//無哨兵位,直接排序
void insertsort(int arr, int len)
arr[j + 1] = tmp; }}
int main( )
; int len = sizeof(arr) / sizeof(arr[0]);
insertsort(arr, len);
for (int i=0;i
內部排序 直接插入排序
直接插入排序是一種簡單的排序方法,具體做法是 在插入第i個記錄時,r1 r2 ri 1已經排好序,這時候將ri的關鍵字ki依次與關鍵字ki 1 ki 2等進行比較,從而找到應該插入的位置並將ri插入,插入位置及其後的記錄依次向後移動。直接插入排序法在最好的情況下 待排序列已按照關鍵碼有序 每趟排序只...
插入排序之 直接插入排序 法
基本思想 將乙個記錄插入到已排序好的有序陣列中,從而得到乙個新陣列,記錄數增1的有序陣列。即 先將序列的第1個記錄看成是乙個有序的子串行,然後從第2個記錄逐個進行插入,直至整個序列有序為止。要點 設立標誌,作為臨時儲存和判斷陣列邊界之用。說明 1.準備乙個陣列 2.原理 從第二個數開始,往前面插入 ...
插入排序 直接插入排序
直接插入排序演算法思想 將整個資料表分成左右兩個子表,其中左子表為有序表,右子表為無序表 整個排序過程就是將右子表中的元素逐個插入到左子表中,直到右子表為空,而左子表成為新的有序表。演算法過程分析 將待排序的元素存放在陣列r n 1 中,在初始狀態下,r 0 為監視哨,r 1 為有序區,r 2 r ...