倒序插入法的詳細計算步驟?
插入排序法的基本操作就是將一個數據插入到已經排好序的有序數據中(初始時可以認為只有一個元素的序列是有序的序列,即從第二個數據起開始逐個插入),從而得到一個新的、個數加一的有序數據。
該算法適用于少量數據的排序,時間復雜度為O(n^2)。是穩定的排序方法。插入算法把要排序的數組分成兩部分:第一部分包含了這個數組的所有元素,但將最后一個元素除外(讓數組多一個空間才有插入的位置),而第二部分就只包含這一個元素(即待插入元素)。在第一部分排序完成后,再將這個最后元素插入到已排好序的第一部分中。
插入排序的基本思想是:每步將一個待排序的紀錄,按其關鍵碼值的大小插入前面已經排序的序列中適當位置上,直到全部插入完為止。
為避免反復比較是否越界,下面的插入排序使用了“哨兵”。即在插入的盡頭,復制一個待插入數據的副本(a[0]),一身二用,既作為保存數據,又有效防止搜索時越界而反復檢測是否越界。每一輪中,比待插入的數大的數,逐個后移一位,最后把a[0]正確放置到位。
1)a[1]~a[n]中存放數據,i=2
2)a[0]=a[i],j=i;
3)若a[j-1]>a[0],則a[j]=a[j-1],然后j--;再轉3)
4)a[j]=a[0];
5)i++; 若i<=n,則j=i,轉3),否則結束。
排序結束后a[1]~a[n]即為升序的序列。