插入排序

1,插入排序思想
利用 for( int i = 1 ; i < n ; i ++ )遍历整个数组,考察当前第i个元素,并将其下标记录为j(j>0)其值赋值给e,比较j和j-1元素的大小,如果当前元素较前一个元素较小( arr[j-1] > e),将前一个元素后移,并使j–,逐个完成上述操作,然后将e赋值给第j个元素。

2,代码实现

#include 
#include 
using namespace std;

template
void insertionSort(T arr[], int n){

    for( int i = 1 ; i < n ; i ++ ) {
		T e = arr[i];
		int j; 
		for (j = i; j > 0 && arr[j - 1] > e; j--)
			arr[j] = arr[j - 1];
		arr[j] = e;
    }

    return ;
}

int main() {

	int a[10] = { 10,9,8,7,6,5,4,3,2,1 };
	insertionSort(a, 10);
	for (int i = 0; i < 10; i++)
		cout << a[i] << " ";
	cout << endl;

    return 0;
}

你可能感兴趣的:(算法和数据结构)