题目描述
编写程序,在主函数中用随机函数产生20个[0~100)之间的整数,存放于一个一维数组中,先输出排序前的数据,再使用插入排序的算法进行排序,最后输出排好序的数据。
(提示:注意“观察哨方法”的使用;)
案例代码
以下是使用C语言编写的程序,实现了插入排序算法来对随机产生的20个整数进行排序,并使用了观察哨方法:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 20
// 插入排序函数
void insertionSort(int arr[], int n) {
int i, j, temp;
// 使用观察哨,将数组的最后一个元素作为观察哨
for (i = 1; i < n; i++) {
arr[0] = arr[i]; // 将观察哨放在数组末尾
j = i - 1;
// 从已排序的部分向前比较,将大于观察哨的元素向后移动
while (arr[j] > arr[0]) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = arr[0]; // 将观察哨插入到正确的位置
}
}
int main() {
int arr[SIZE + 1]; // 增加一个额外位置用于观察哨
int i;
// 使用当前时间作为随机数种子
srand(time(NULL));
// 产生随机数并存入数组
printf("生成的随机数为:\n");
for (i = 1; i <= SIZE; i++) {
arr[i] = rand() % 100; // 生成0~99的随机数
printf("%d ", arr[i]);
}
printf("\n");
// 使用插入排序算法对数组进行排序
insertionSort(arr, SIZE + 1);
// 输出排序后的数组
printf("排序后的结果为:\n");
for (i = 1; i <= SIZE; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
这个程序首先生成了20个[0, 99]之间的随机整数,并将它们存放在一个数组中。然后使用插入排序算法对数组进行排序,同时使用观察哨方法,将数组的最后一个元素作为观察哨。最后输出排序前后的结果。
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END