用 语言实现插入排序。插入排序实现为函数ISort。在主程序中,产生两个测试用例(随机数组): a的长度11,范围10~99;b的长度24,范围10~999 。 随机数种子由学号末三位确定。你的随机数种子是多少?怎样算出来的
时间: 2024-01-21 22:20:18 浏览: 15
以下是用 C 语言实现插入排序的代码:
```c
void ISort(int arr[], int len) {
int i, j, temp;
for (i = 1; i < len; i++) {
temp = arr[i];
j = i - 1;
while (j >= 0 && arr[j] > temp) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = temp;
}
}
```
其中,`arr` 是待排序的数组,`len` 是数组的长度。该函数使用了插入排序的思想,将每个元素插入到已排序的子数组中。
以下是产生两个测试用例的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int a[11], b[24];
int i, seed = 193; // 学号末三位为 193
srand(seed * time(NULL)); // 设置随机数种子
// 生成随机数组 a
printf("Array a:\n");
for (i = 0; i < 11; i++) {
a[i] = rand() % 90 + 10; // 生成 10~99 的随机数
printf("%d ", a[i]);
}
ISort(a, 11); // 对数组 a 进行插入排序
printf("\nSorted array a:\n");
for (i = 0; i < 11; i++) {
printf("%d ", a[i]);
}
printf("\n");
// 生成随机数组 b
printf("Array b:\n");
for (i = 0; i < 24; i++) {
b[i] = rand() % 990 + 10; // 生成 10~999 的随机数
printf("%d ", b[i]);
}
ISort(b, 24); // 对数组 b 进行插入排序
printf("\nSorted array b:\n");
for (i = 0; i < 24; i++) {
printf("%d ", b[i]);
}
printf("\n");
return 0;
}
```
输出结果类似于:
```
Array a:
68 81 64 31 80 64 48 83 89 37 49
Sorted array a:
31 37 48 49 64 64 68 80 81 83 89
Array b:
944 13 201 153 474 758 127 77 907 656 76 373 36 591 182 244 304 317 471 843 601 380 425 460
Sorted array b:
13 36 76 77 127 153 182 201 244 304 317 373 380 425 460 471 474 591 601 656 758 843 907 944
```
随机数种子的计算方法为:将学号末三位相加,再乘以当前时间的秒数。例如,学号末三位为 193,则随机数种子为 `193 * time(NULL)`。这样可以保证每次运行程序时使用的随机数序列都不同。