插入排序

插入排序,顾名思义,就是从一边开始,挨个比较找到位置之后插入,就像玩扑克的时候,摸一张新牌,找到它应该得位置插入。

插入排序是一种增量方法

插入排序_第1张图片

C语言代码:


#include <stdio.h>

void InsertSort(int a[],int len);

int main(void)
{
	int a[] = { 2,4,3,6,1 };
	int len = sizeof(a)/sizeof(int);
	InsertSort(a, len);
	for (int i = 0; i < len; i++) {
		printf("%d\n", a[i]);
	}
	getchar();
}

void InsertSort(int a[], int len)
{
	int i;
	int j;
	int key;
	for (i = 1; i < len; i++) {
		key = a[i];
		j = i - 1;
		//此处用while更加清晰简便
		//插入排序认为已经存在的元素是已经排序完毕的,所以通过while循环来找到第一个不大于key的元素,然后将key插入到此元素的后面
		while (j>=0 && a[j]>key){
			a[j + 1] = a[j];
			--j;
		}
		//跳出while循环,此时a[j]就是第一个不大于key的元素,在它后面插入key
		a[j + 1] = key;
	}
}


很明显,插入排序并不是一种很快速的排序,时间复杂度为O(n^2)。

你可能感兴趣的:(插入排序)