代码生成(用C语言生成0~999 999(均包含,或者更大范围)之间的随机整数20 000个,要求随机数都不相同(如相同,则需要去重复并重新生成当前随机数),即,得到20 000个两两不同的随机数,并用插入排序实现所得20 000个随机数的递增排序,并分别计算出算法对应的数据真实比较次数;。)
时间: 2023-11-14 07:05:01 浏览: 90
生成随机数的C语言代码
好的,这是一个比较复杂的问题,我会尽力回答。首先,需要使用C语言的rand()函数生成随机数,然后使用插入排序对这些随机数进行排序。以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_NUM 1000000
#define ARRAY_SIZE 20000
int main() {
int i, j, temp;
int array[ARRAY_SIZE];
int count = 0;
srand(time(NULL)); // 初始化随机数种子
for (i = 0; i < ARRAY_SIZE; i++) {
array[i] = rand() % MAX_NUM; // 生成随机数
for (j = 0; j < i; j++) {
if (array[i] == array[j]) { // 判断是否有重复
i--;
break;
}
}
}
// 插入排序
for (i = 1; i < ARRAY_SIZE; i++) {
temp = array[i];
j = i - 1;
while (j >= 0 && array[j] > temp) {
array[j+1] = array[j];
j--;
count++; // 记录比较次数
}
array[j+1] = temp;
}
// 输出结果
printf("排序后的数组:\n");
for (i = 0; i < ARRAY_SIZE; i++) {
printf("%d ", array[i]);
}
printf("\n比较次数:%d\n", count);
return 0;
}
```
在上面的代码中,首先使用srand()函数初始化随机数种子,然后使用rand()函数生成随机数,并且判断是否有重复。最后使用插入排序算法对随机数数组进行排序,并记录比较次数。最终输出排序后的数组和比较次数。
希望这个回答能够满足你的需求,如果有任何问题,欢迎随时问我。
阅读全文