.自动生成1万、10万、100万...个待排序序列,保存到文件中sort in*.txt 2.选择快速排序算法。 3.列出表格,记录每个排序花费时间。
时间: 2024-04-10 09:33:53 浏览: 47
好的,我会按照您的要求来实现。首先,让我们来生成待排序序列并保存到文件中:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 生成指定长度的随机序列并保存到文件
void generateRandomSequence(int length, const char* filename) {
FILE* file = fopen(filename, "w");
if (file == NULL) {
printf("无法创建文件 %s\n", filename);
return;
}
srand(time(NULL));
for (int i = 0; i < length; i++) {
int num = rand();
fprintf(file, "%d\n", num);
}
fclose(file);
}
int main() {
int lengths[] = { 10000, 100000, 1000000 };
int num_lengths = sizeof(lengths) / sizeof(lengths[0]);
for (int i = 0; i < num_lengths; i++) {
char filename[20];
sprintf(filename, "sort in%d.txt", lengths[i]);
generateRandomSequence(lengths[i], filename);
}
return 0;
}
```
上述代码会生成三个文件,分别是`sort in10000.txt`、`sort in100000.txt`和`sort in1000000.txt`,每个文件包含了对应长度的随机序列。
接下来,我们使用快速排序算法对这些序列进行排序,并记录每个排序花费的时间:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 快速排序算法
void quickSort(int arr[], int low, int high) {
if (low < high) {
int i = low, j = high, pivot = arr[low];
while (i < j) {
while (i < j && arr[j] >= pivot)
j--;
if (i < j)
arr[i++] = arr[j];
while (i < j && arr[i] <= pivot)
i++;
if (i < j)
arr[j--] = arr[i];
}
arr[i] = pivot;
quickSort(arr, low, i - 1);
quickSort(arr, i + 1, high);
}
}
int main() {
int lengths[] = { 10000, 100000, 1000000 };
int num_lengths = sizeof(lengths) / sizeof(lengths[0]);
for (int i = 0; i < num_lengths; i++) {
char filename[20];
sprintf(filename, "sort in%d.txt", lengths[i]);
FILE* file = fopen(filename, "r");
if (file == NULL) {
printf("无法打开文件 %s\n", filename);
continue;
}
int* arr = malloc(lengths[i] * sizeof(int));
for (int j = 0; j < lengths[i]; j++) {
fscanf(file, "%d", &arr[j]);
}
fclose(file);
clock_t start_time = clock();
quickSort(arr, 0, lengths[i] - 1);
clock_t end_time = clock();
double execution_time = (double)(end_time - start_time) / CLOCKS_PER_SEC;
printf("长度为 %d 的序列排序花费时间:%f 秒\n", lengths[i], execution_time);
free(arr);
}
return 0;
}
```
上述代码会读取每个文件中的序列,使用快速排序算法进行排序,并记录排序所花费的时间。
最后,您可以根据需要进行调整和优化这些代码。希望能对您有所帮助!
相关推荐
![text/x-c++](https://img-home.csdnimg.cn/images/20210720083646.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)