壹般來說,插入排序是通過就地在數組上實現的。具體算法描述如下:
從第壹個元素開始,可以認為該元素已經排序。
取出下壹個元素,按照排序後的元素順序從後向前掃描。
如果元素(已排序)比新元素大,則將該元素移動到下壹個位置。
重復步驟3,直到找到排序後的元素小於或等於新元素的位置。
在這個位置插入新元素之後。
重復步驟2~5。
如果比較操作的成本大於交換操作的成本,可以使用二分搜索法方法來減少比較操作的次數。這種算法可以看作是插入排序的壹種變體,稱為二分搜索法排序。
示例代碼
void insertion_sort(int array[],int first,int last)
{
int i,j;
內部溫度;
for(I = first+1;我& lt=最後;i++)
{
temp = array[I];
j = I-1;
while((j & gt;= first)& amp;& amp(array[j]& gt;溫度))
{
array[j+1]= array[j];
j-;
}
array[j+1]= temp;
}
}