直接插入排序:现在我从数组里面拿到一个数,此时我需要将这个数放到我前面已经排好的序列里面。
#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");
}