1.直接插入排序
原理:將數組分為無序區和有序區兩個區,然后不斷將無序區的第一個元素按大小順序插入到有序區中去,
最終將所有無序區元素都移動到有序區完成排序。
要點:設立哨兵,作為臨時存儲和判斷數組邊界之用。
實現:
用C#源代碼進行了實現
Void InsertSort(Node L[],int length)
{
Int i,j;//分別為有序區和無序區指針
for(i=1;i<length;i++)//逐步擴大有序區
{
j=i+1;
if(L[j]<L[i])
{
L[0]=L[j];//存儲待排序元素
While(L[0]<L[i])//查找在有序區中的插入位置,同時移動元素
{
L[i+1]=L[i];//移動
i--;//查找
}
L[i+1]=L[0];//將元素插入
}
i=j-1;//還原有序區指針
}
}
這個算法的復雜度是 O(n^2) 他的算法的復雜度與BubbleSort 的算法的復雜度一致,但是其理解就是在數組中進行了插入要進行排序的數據
