算法:(升序:小→大,适合数据量较小)
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. }