直接插入排序——C語言
阿新 • • 發佈:2018-12-11
插入排序是最簡單的一種排序方法。它的基本操作就是將一個記錄插入到已排好序的有序表中,從而得到一個新的、記錄數增1的有序表。
直接插入排序時,我們將第二個陣列元素作為插入數,第一個數作為有序陣列。逐個比較兩者大小,最後將數插入到合適位置。
程式碼實現:
/**插入排序**/ void inse(int *data) { int t=0,j=0; for(int i=1;i<MAX;i++) { t=data[i];///從待排序陣列中取出第二個元素 j=i-1; while(j>=0&&t<data[j])///比較取出的元素與陣列元素的大小,若小則插入左邊 { data[j+1]=data[j]; j--; } data[j+1]=t;///找到合適位置將元素插入 } for(int i=0;i<MAX;i++) printf(" %d \t",data[i]); }
執行結果:
時間複雜度:O(n²)
若待排序是隨機的,則作為直接插入排序時所需進行各種關鍵字間的比較次數和移動記錄的次數,約為n²/4。由此,直接插入排序的時間複雜度為O(n²)。