#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#define N 100 //数据个数
#define U 1000 //数据范围
int data[N];//存放数据的数组
int comp_count = 0; // 数据比较次数
int swap_count = 0; // 数据交换次数
//添加随机数到数组
void add_data(int *data)
{
srand(time(NULL));
for(int i=0; i<N; ++i)
data[i] = rand() % U;
}
//展示排序前数组
void show(int *data)
{
printf("随机序列: ");
for(int i=0; i<N; ++i)
printf("%d\t",data[i]);
printf("\n");
}
//展示排序后的数组、比较次数和交换次数
void show_ok(int *data)
{
printf("插入排序: ");
for(int i=0; i<N; ++i)
printf("%d\t",data[i]);
printf("\n总共比较次数: %d\n总共交换次数: %d\n", comp_count, swap_count);
}
//交换元素
void exchange(int *a, int *b)
{
int n = *a;
*a = *b;
*b = n;
swap_count++;
}
//插入排序
void insertion(int *data, int len)
{
for (int i=1; i<N; i++)
{
int j = i-1, a = data[i];
while(j>=0 && data[j]>a)
{
comp_count++;
swap_count++;
data[j+1] = data[j];
j--;
}
comp_count++;
data[j+1] = a;
}
}
int main()
{
add_data(data);
show(data);
insertion(data, N);
show_ok(data);
return 0;
}
产生N个随机数,使用插入排序,对随机数进行排序
插入排序算法详解
最新推荐文章于 2022-08-29 14:58:01 发布
414

被折叠的 条评论
为什么被折叠?



