经典排序之插入排序

144 阅读1分钟

经典排序算法 – 插入排序Insertion sort  

插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。 
插入排序方法分直接插入排序和折半插入排序两种,这里只介绍直接插入排序,折半插入排序留到“查找”内容中进行。 

  图1演示了对4个元素进行直接插入排序的过程,共需要(a),(b),(c)三次插入。

 

 

设数组为a[0…n-1]。

1.      初始时,a[0]自成1个有序区,无序区为a[1..n-1]。令i=1

2.      将a[i]并入当前的有序区a[0…i-1]中形成a[0…i]的有序区间。

3.      i++并重复第二步直到i==n-1。排序完成。

代码:

 

#include <iostream>
using namespace std ;
//C语言获取数组长度  注意宏定义不能换行
#define getLength(array)  sizeof(array)/sizeof(array[0])

//C++获取数据长度
template <class T>
int getLen(T& array) {
	return sizeof(array)/sizeof(array[0]);
}

int* insertSort1