简单说一下,插入排序的原理:就像从小到大插入扑克牌一样,插入新牌之前,插入的牌序已经是从小到大排列好。所以,第一张牌即是i = 0 的那张,就应该从 i = 1开始插入。j是后来要插入的位置。具体说来,程序流程如下:
具体说来:
#ifndef INSERTSORT_HHHH
#define INSERTSORT_HHHH
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
template<typename T>
void Insert_Sort_Iterator(T* array,size_t arraysize){
if(NULL == array)
return;
int compareorder = 0;
int currentorder = 0;
for(int compareorder = 1; compareorder < arraysize; compareorder ++){
currentorder = compareorder - 1;
T key = array[compareorder];
while(currentorder >= 0 && key < array[currentorder]){
array[currentorder + 1] = array[currentorder];
currentorder --;
}
array[currentorder + 1] = key;
}
#ifdef DEBUG
int i = arraysize - 1;
while(1){
if(i >= 0)
printf("%d",array[i --]);
else
break;
}
#endif
}
#endif
实例已经通过测试用例证明,应该没啥错误。