插入排序算法

插入排序可以看做是,把从左到右的数据依次看做是进入室内的人(室外的人),每进一个人,都需要依次跟室内的人进行比较,如果大于室内的人,则排在队尾~否则,交换位置

C实现如下:

#include<stdio.h>
#include<stdlib.h>

void insertionsort(int *a, int n);

int main()
{
	int i;
	int a[10] = { 2,4,6,8,0,1,5,9,7,3};
	insertionsort(a, 10);
	for (i = 0; i < 10; i++)
		printf("%d\t", a[i]);
	system("pause");
	return 0;
}


void insertionsort(int *a, int n)
{
	int in, out, temp;
	//室外室内和中间变量;室外的人进入室内依次与室内的人进行比较
	//其中,室外的人是从第二个开始,即从索引号为1的位置开始与室内的人进行比较
	for (out = 1; out < n; out++)
	{
		temp = a[out];
		in = out;
		//利用while循环~将外面的元素依次与里面的元素进行比较
		while (in>0 && a[in - 1] >= temp)
		{
			a[in] = a[in - 1];
			in--;
		}
		a[in] = temp;
	}
}


猜你喜欢

转载自blog.csdn.net/strive_0902/article/details/80227358