已知n個元素的陣列a[1…n],使用插入法將a中元素按非減排序。
插入排序:往有序的序列裡,插入乙個新元素,但保證插入此資料後,該序列仍然有序。
也可以這樣解釋:a[n]的前i個元素有序,即a[0]至a[i-1]有序(公升序或降序),插入a[i]後,仍要保證a[0]至a[i]有序;依次類推,直到i==n-1。
複雜度分析:
時間複雜度:在最壞情況下為o(n^2),即逆序時取得。在最好情況下為o(n),即正序時取得。
空間複雜度:由於插入排序只需o(1),本insertsort函式只使用了3個變數。
a[j+1] = tmp;//插值
}}int main()
; printf("插入排序前為:\n");
for (int i = 0; i < n; i++)
insertsort(a, n);
printf("\n\n插入排序後為:\n");
插入排序原理及實現思路
插入排序其實就是拿未排序陣列中的第乙個值,插入到已排序完中的陣列的合適位置,來完成排序 圖中的黃色部分為我們已經排好序的陣列部分 圖中的紅色部分為未排好序陣列中的第乙個值 圖中的藍色部分為未排序的陣列部分 1.我們開始預設陣列的第乙個元素為已經排好序的陣列,整個陣列為a 2.未排序陣列中的第乙個元素...
插入排序思想與實現
插入排序的基本思想 每一趟將乙個待排序元素,按其排序碼大小插入到前面已經排好序的一組元素的適當位置上,直到所有待排序元素元素全部插入為止。在這裡,這裡介紹兩種具體的插入排序演算法 直接插入排序,希爾排序。1 直接插入排序 直接插入排序的思想 當插入第i i 1 個元素時,前面的arr 0 arr i...
插入排序實現
插入排序 public class insertionsort for int i arr 思路 外層迴圈用來從無序區域中取值,起始位置是下標1,把下標0到下標0當作已經有序的區域,把要取的值用臨時變數val存起來,如果這個值正好應該排在有序區域的最後,那麼插入位置就是它原來的下標,如果這個值比有序...