常见排序算法 1--插入排序

今天学习插入排序。

  遍历到第N个元素的时候,前n-1个元素已经按序排列,只需将第N个元素插入到合适的位置,即将其与第n-1.。。。i个元素比较,当A【i-1】>A[n] >A[i],则找到N的位置,当然从i----j元素要后移的哦,亲。

在这里不需要额外的空间。

 

废话少说上代码。

inset_sort.h

/************************************************************************/
/* 这里讲述插入排序算法
    遍历到第N个元素的时候,前n-1个元素已经按序排列,只需将第N个元素插入到合适的位置,即将其与第n-1.。。。i个元素比较
	当A【i-1】>A[n] >A[i],则找到N的位置
	在这里使用int作为元素类型
*/
/************************************************************************/

//array为待排序数组,length为其长度
void insertion_sort(int a[],int length);

insert_sort.cpp
#include "Insert_Sort.h"

void insertion_sort(int a[], int length){
	for (int j = 1;  j < length; ++j)  //数组下标从零开始,所以这里j <--- 1。。。。n-1
	{
		int key = a[j];                //先保留a[j]的值,因为前面数组元素后移会替换该值
		int i = j - 1;                        //已排序的元素最后一个的下标
		while(i > -1 && a[i] > key){ //此处为升序排列
			a[i+1] = a[i ];         //元素后移
			--i;
		}
		a[i+1] = key;              //找到位置,插入即可
	}
}

你可能感兴趣的:(常见排序算法 1--插入排序)