插入排序

算法:(升序:小→大,适合数据量较小)

1、从第一个元素开始,该元素可以认为已经被排序

2、取出下一个元素,在已经排序的元素序列中从后向前扫描

3、如果该元素(已排序)大于新元素,将该元素移到下一位置

4、重复步骤3,直到找到已排序的元素小于或者等于新元素的位置

5、将新元素插入到该位置后

6、重复步骤2~5

01.void insertion_sort(int array[], int first, int last)  
02. {  
03.        int i,j;  
04.        int temp;  
05.        for (i = first+1; i<=last;i++)  
06.        {  
07.                temp = array[i];  
08.                j=i-1;  
09.   
10.                //与已排序的数逐一比较,大于temp时,该数后移  
11.                while((j>=first) && (array[j] > temp))  //当first=0,j循环到-1时,由于[[短路求值]],不会运算array[-1]  
12.                {  
13.                        array[j+1] = array[j];  
14.                        j--;  
15.                }  
16.                array[j+1] = temp;      //被排序数放到正确的位置  
17.   
18.        }  
19. }  

 

posted @ 2017-06-02 11:34  yl007  阅读(114)  评论(0编辑  收藏  举报