直接插入排序(straight insertion sorting)的基本思想是:把n個待排序的元素看成為乙個有序表和乙個無序表,開始時有序表中只包含乙個元素,無序表中包含有n-1個元素,排序過程 中每次從無序表中取出第乙個元素,將它插入到有序表中的適當位置,使之成為新的有序表,重複n-1次可完成排序過程。
把a[i]插入到a[0],a[1],...,a[i-1]之中的具體實施過程為:先把a[i]賦值給變數t,然後將t依次與a[i-1],a[i-
2],...進行比較,將比t大的元素右移乙個位置,直到發現某個j(0<=j<=i-1),使得a[j]<=t或j為(-1),把t
賦值給a[j+1].
改進的方法
一種查詢比較操作和記錄移動操作交替地進行的方法。
具體做法:
將待插入記錄r[i]的關鍵字從右向左依次與有序區中記錄r[j](j=i-1,i-2,…,1)的關鍵字進行比較:
① 若r[j]的關鍵字大於r[i]的關鍵字,則將r[j]後移乙個位置;
②若r[j]的關鍵字小於或等於r[i]的關鍵字,則查詢過程結束,j+1即為r[i]的插入位置。
關鍵字比r[i]的關鍵字大的記錄均已後移,所以j+1的位置已經騰空,只要將r[i]直接插入此位置即可完成一趟直接插入排序。
即是從新的序列的後面開始比較,並且進行移位;
php**:
[php]
<?php
echo '';
$arr = array(90,5,3,9,2,6,10,30,0,0,0,0,0);
print_r(insertsort($arr));
function insertsort($arr)else
} }
return $res;
} ?>
演算法 直接插入
排序挨個來,今天到插入排序。下面來談談插入排序裡的直接插入排序 解決麻煩的事情,可以先從簡單的 問題入手 咱們先開始兩個數的插入排序。具體過程 先把要排序的數放到臨時變數裡,然後與第乙個數比較,如果可以插入到第乙個數的位置,然後第乙個數向後移,即把第乙個數放到第二個位置。最後再把第二個數放到第乙個位...
直接插入演算法
插入演算法是每次將乙個新資料插入到有序佇列中的合適位置的一種演算法。演算法的詳細過程描述如下 假設有乙個無序佇列r1,r2,r3,rn 1 首先認為r1是有序的,然後將r2,r3,rn依次插入到這個有序佇列的合適位置,因此我們需要乙個外部迴圈 2 我們需要將ri插入到合適位置,ri前面的資料已經是有...
javascript實現插入排序 直接插入排序
插入排序 insertion sort 是一種簡單直觀且穩定的排序演算法。如果有乙個已經有序的資料序列,要求在這個已經排好的資料序列中插入乙個數,但要求插入後此資料序列仍然有序,這個時候就要用到一種新的排序方法 插入排序法,插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料中,從而得到乙個新...