国外好看的网站设计网页设计用什么软件做
实验目的及要求:
通过排序算法的实验,旨在深化学生对不同排序算法原理和性能的理解,培养其分析和比较算法效率的能力。通过实际编程,学生将掌握排序算法的实现方法,了解不同算法的优劣,并通过性能测试验证其在实际应用中的表现。通过这次实验,学生将深入了解排序算法的原理和性能特征,培养实际问题解决的编程能力,并提高对算法分析的理解水平。
实验设备环境:
1.微型计算机
2.DEV C++(或其他编译软件)
任务:
(1)用随机数产生 100 000 个待排序元素的关键字值
(2) 测试下列各排序函数的机器实际执行时间:
a) 直接插入排序;
b) 希尔排序;
c) 直接选择排序.
d)堆排序;
g)二路归并排序;
e)冒泡排序;
f) 快速排序;
h) 基于链式队列的基数排序。
完成 e,f 选项。
[算法思想] 程序生成了一个包含 10 个随机数的数组,然后分别对这个数组使用冒泡排序和快速排序,并测量了它们的执行时间。你可以在此基础上继续添加其他排序算法的实现和测试。请注意,排序算法的性能可能受到随机数生成的影响,因此可以多次运行程序以获得更稳定的结果。为了更好地衡量执行时间,使用了 C 标准库中的 time.h 头文件中的 clock 函数。
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int* generateRandomNumbers(int n) {int* arr = (int*)malloc(n * sizeof(int));for (int i = 0; i < n; ++i) {arr[i] = rand();}return arr;
}
void bubbleSort(int arr[], int n) {for (int i = 0; i < n - 1; ++i) {for (int j = 0; j < n - i - 1; ++j) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}
}
void quickSort(int arr[], int low, int high) {if (low < high) {int pivot = arr[high];int i = low - 1;for (int j = low; j <= high - 1; ++j) {if (arr[j] <= pivot) {++i;int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}int temp = arr[i + 1];arr[i + 1] = arr[high];arr[high] = temp;quickSort(arr, low, i);quickSort(arr, i + 2, high);}
}
int main() {const int n = 8;int* arr_bubble = generateRandomNumbers(n);int* arr_quick = (int*)malloc(n * sizeof(int));printf("随机生成的值:\n");for (int i = 0; i < n; ++i) {printf("%d ", arr_bubble[i]);}printf("\n\n");for (int i = 0; i < n; ++i) {arr_quick[i] = arr_bubble[i];}clock_t start_bubble = clock();bubbleSort(arr_bubble, n);clock_t end_bubble = clock();double time_bubble = ((double)(end_bubble - start_bubble)) / CLOCKS_PER_SEC;clock_t start_quick = clock();quickSort(arr_quick, 0, n - 1);clock_t end_quick = clock();double time_quick = ((double)(end_quick - start_quick)) / CLOCKS_PER_SEC;printf("\n 冒泡排序执行时间: %f 秒\n", time_bubble);printf("快速排序执行时间: %f 秒\n", time_quick);free(arr_bubble);free(arr_quick);return 0;
}