插入排序及C语言实现


插入排序的工作方式就像排序一手扑克牌。开始时,我们的左手为空,然后,我们每次从桌上拿走一张牌并将它插入到左手中正确的位置。为了找到正确的位置,我们总是从右到左将它与左手中的每张牌进行比较。这样,左手中的牌始终是排好序的,直到最后一张。


插入排序的时间复杂度是O(n^2),因此,对于小规模问题,能有效解决,但是对于大规模排序,可能就要选择其他排序方法。


#include <stdio.h>

void insertion_sort(int *,int);

main()
{
	int i;
	int a[10] = {23,43,56,41,9,80,123,1,14,90};
	insertion_sort(a,10);
	for (i = 0;i < 10;i++)
		printf("%d ",a[i]);
	printf("\n");
}
void insertion_sort(int *a,int n)//a为数组,n为数组个数
{
	int i,j,key;

	for (j = 1;j < n;j++) {
		key = a[j];
		i = j - 1;
		while (i >= 0 && a[i] > key) {
			a[i+1] = a[i];
			i--;
		}	
		a[i+1] = key;
	}
}


展开阅读全文

没有更多推荐了,返回首页