基本思想:
將乙個記錄插入到已排序好的有序表中,從而得到乙個新,記錄數增1的有序表。即:先將序列的第1個記錄看成是乙個有序的子串行,然後從第2個記錄逐個進行插入,直至整個序列有序為止。
要點:設立哨兵,作為臨時儲存和判斷陣列邊界之用。
如果碰見乙個和插入元素相等的,那麼插入元素把想插入的元素放在相等元素的後面。所以,相等元素的前後順序沒有改變,從原無序序列出去的順序就是排好序後的順序,所以插入排序是穩定的。
效率:時間複雜度:o(n2),空間複雜度為 o(1)。
下面此題是hdu-1040題:(這裡我使用插入排序演算法)
#includeusingnamespace
std;
const
int n =1005
;void sort(int a,int
num);
intmain()
cout
<}
return0;
}void sort(int a,int num)//
這是插入排序的**
a[j]=x;
}}
八大排序(一)插入排序(C語言)
一 插入排序 一 直接插入排序 1.向一組有序的資料中插入乙個數 2.預設第乙個資料有序,將第乙個資料以後的所有資料視為待排序資料,從待排序的資料中依次選取乙個資料,對有序的資料從後向前遍歷,直到找到第乙個比要插入的資料小的資料,將該數後面的資料均向後移動一位,將要插入的資料放在該數的後面,形成新的...
八大排序演算法之插入排序
所謂排序,就是使一串記錄,按照其中的某個或某些關鍵字的大小,遞增或遞減的排列起來的操作。排序演算法,就是如何使得記錄按照要求排列的方法。排序演算法在很多領域得到相當地重視,尤其是在大量資料的處理方面。乙個優秀的演算法可以節省大量的資源。在各個領域中考慮到資料的各種限制和規範,要得到乙個符合實際的優秀...
八大排序演算法之插入排序
排序有內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。先上圖 我先從上往下挨個介紹 1 插入排序 插入排序時間複雜度最優為 o n 情況是陣列為已經排好的順序 最差為o n 2 情況為陣列為排好的逆序 平均...