再談直接插入排序之前首先來談談什麼是排序?
2、穩定排序與不穩定排序:
假設 ki = kj ,且排序前序列中 ri 領先於 rj ;
若在排序後的序列中 ri 仍領先於 rj ,則稱排序方法是穩定的。
若在排序後的序列中 rj 仍領先於 ri ,則稱排序方法是不穩定的。
3、演算法的複雜性:體現在執行該演算法時的計算機所需資源的多少上(時間和空間資源)
演算法複雜度分為時間和空間複雜度。
4、時間複雜度:簡單的說就是程式迴圈執行的總的次數。演算法的時間複雜度是乙個函式,
它定量描述了該演算法的執行時間。時間複雜度常用大o符號表述,即o(f(n))。
5、輔助空間:輔助空間是評價排序演算法的乙個重要指標,輔助空間是指除了存放待排序資源之外,
執行演算法所需要的其他儲存空間。
那麼接下來我就來介紹直接插入排序了:
首先直接插入排序是一種插入排序它和希爾排序一樣都屬於插入排序,也是一種穩定的排序;
時間複雜度:最好情況:o(n) 最壞情況:o(n2) 平均情況:o(n2);
空間複雜度:o(1)
那麼直接插入排序的主要思想是什麼呢?
首先將一組資料分為有序區和無序區,假設第乙個為有序區,其餘為無序區,接著將無序區的第乙個與有序區按從小到大的順序進行比較,
插入有序區,直到無序區最後乙個插入為止。
下面是我寫的直接插入排序的**:
#include void insertsort(int par_array, int length) //本次排序按照從小到大的順序
else
}par_array[j + 1] = temp; //插入到有序區 }}
int main1()
; int len = sizeof(a) / sizeof(a[0]); //求陣列的長度
insertsort(a, len);
for (i = 0; i < len; i++) //列印資料
printf("\n");
return 0;
}
插入排序 1 直接插入排序
插入排序 插入排序的演算法思想是 在乙個有序 的元素序列中,不斷地將新元素插入到該已經有序的元素序列中的合適位置,直到所有元素都插入到合適位置則完成排序。直接插入排序 假設待排序的元素有n個,對應的元素分別是a1,a2,a3,a4.因為第乙個元素是有序的,所以從第二個元素開始,將a2與a1進行比較。...
1 直接插入排序 插入排序
直接插入排序 straight insertion sort 是一種最簡單的排序方法,它的基本操作是將乙個記錄插入到已排好序的有序表中,從而得到乙個新的 記錄數增1的有序表。排序過程如下 參考自嚴蔚敏的資料結構 c語言版 思想是第一次將第乙個元素當作有序組,每次後面的元素插入到有序組中使其任然有序,...
直接插入排序1
直接插入排序 straight insertion sort 的基本思想是 把n個待排序的元素看成為乙個有序表和乙個無序表。開始時有序表中只包含1個元素,無序表中包含有n 1個元素,排序過程中每次從無序表中取出第乙個元素,將它插入到有序表中的適當位置,使之成為新的有序表,重複n 1次可完成排序過程。...