直接插入排序,使用C语言实现。
这里为了方便测试面对大量数据时直接插入排序算法的运行时间,通过宏定义来设定生成随机数的数量(即参与排序的数据数量),利用rand()函数生成随机数,便于生成大量数据,并且通过srand()函数保证每次编译运行生成的随机数不同,使用<time.h>中的clock()来计时。
代码中,使用arr[0]临时存放待排序的那个元素(即判断是否要插入的那个数), 从arr[1]开始存放随机数。
实现代码
代码实现如下:
#include <stdio.h>
#include <stdlib.h> //生成随机数rand()
#include<time.h> //用到clock()函数计时 ,利用srand()设置随机数种子
#define N 10000 //宏定义,定义生成随机数的数量
//直接插入排序
void InsertionSort(int* A, int n)
{
int key; //待排序的数(要插入的数)
int i, j;
for (j = 2; j <= n; j++)
{
key = A[j];
i = j - 1;
while (i > 0 && A[i] > key) {
A[i + 1] = A[i]; //大于key,向右移
i--;
}
A[i + 1] = key; //小于key,在其后插入key
}
}
int main(