c-直接插入排序

直接插入排序:现在我从数组里面拿到一个数,此时我需要将这个数放到我前面已经排好的序列里面。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/*直接插入排序(从小到大)
先判断是否需要插入,即a[i]是否小于a[i-1],如果小于则从后往前查找直到找正确的位置,然后将比他大的数据后移。*/
void sort(int a[],int len)
{
	int i, j;
	for (i = 1; i < len; i++)
	{
		if (a[i] < a[i - 1])
		{
			int tmp = a[i];
			for (j = i - 1; j >= 0&&a[j]>tmp; j--)
			{
				a[j + 1] = a[j];
			}
			a[j + 1]=tmp;
		}
	}
}
void main()
{
    /*利用时间随机数种子,可以使每次的数据不一样*/
	time_t ts;//时间数据类型
	unsigned int num = time(&ts);//获取时间,转换为整数
	srand(num);//初始化随机数种子
	int a[10];
	//初始化数组
	for (int i = 0; i < 10; i++)
	{
		a[i] = rand() % 10;
		printf("%d\n",a[i]);
	}
	sort(a,10);
	for (int i = 0; i < 10; i++)
	{
		printf("%d\n",a[i]);
	}
	system("pause");
}

发表评论

您的电子邮箱地址不会被公开。

公众号

编程面试题