有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据。
voidinsertsort(type*arr,longlen)/*insertsortalgorithm*/
{
longi=0,j=0;/*iteratorvalue*/
typetmpdata;
assertf(arr!=null,"ininsertsortsort,arrisnull\n");
for(i=1;i<len;i++)
{
j=i;
tmpdata=arr;
while(tmpdata<arr[j-1]&&j>0)
{
arr[j]=arr[j-1];
j--;
}
arr[j]=tmpdata;
}
}
插入排序算法思路是:
假定这个数组的序是排好的,然后从头往后,如果有数比当前外层元素的值大,则将这个数的位置往后挪,直到当前外层元素的值大于或等于它前面的位置为止.这具算法在排完前k个数之后,可以保证a[1…k]是局部有序的,保证了插入过程的正确性.