#include <stdio.h> #include <stdlib.h> #define MAX_SIZE 100

typedef struct { int data[MAX_SIZE]; int length; } SeqList;

void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; }

int Partition(SeqList *list, int low, int high) { int pivot=list->data[low]; while (low < high) { while (low < high && list->data[high] >= pivot) high--; swap(&list->data[low], &list->data[high]); while (low < high && list->data[low] <= pivot) low++; swap(&list->data[low], &list->data[high]); } return low; }

void QuickSort(SeqList *list, int low, int high) { if (low < high) { int pivotPos = Partition(list, low, high); printf(" "); for (int i = 0; i < list->length; i++) { printf("%d ", list->data[i]); } printf("\n"); QuickSort(list, low, pivotPos - 1); QuickSort(list, pivotPos + 1, high); } }

int main() { int size; printf("请输入数据数量: "); scanf("%d", &size); if (size <= 0 || size > MAX_SIZE) { printf("数量过多,无效! "); return 1; }

SeqList list;

printf("输入 %d 个整数:\n", size);
for (int i = 0; i &#x3C; size; i++) {
    scanf("%d", &list.data[i]);
}
list.length = size;

printf("原始序列: ");
for (int i = 0; i &#x3C; list.length; i++) {
    printf("%d ", list->data[i]);
}
printf("\n");

QuickSort(&list, 0, list.length - 1);

FILE* file = fopen("output.txt", "w");
if (file == NULL) {
    printf("无法打开文件!\n");
    return 1;
}

fprintf(file, "排序结果: ");
for (int i = 0; i &#x3C; list.length; i++) {
    fprintf(file, "%d ", list->data[i]);
}
fprintf(file, "\n");

fclose(file);
printf("排序结果已存储在 output.txt 文件中。\n");

return 0;

}这段代码实现了快速排序算法,对输入的一组整数进行排序,并将排序结果存储在output.txt文件中。

具体实现步骤如下:

  1. 定义了一个结构体SeqList,其中包含一个整型数组data和一个整型变量length,用于存储待排序的数据和数据的数量。
  2. 实现了一个swap函数,用于交换两个整数的值。
  3. 实现了一个Partition函数,用于将数组划分为两部分,并返回划分后基准元素的位置。
  4. 实现了一个QuickSort函数,用于对数组进行快速排序。在该函数中,首先将数组划分为两部分,然后递归地对划分后的两部分进行快速排序。
  5. 在main函数中,首先读取输入的数据数量,并进行有效性检查。然后,读取输入的整数,并将其存储在SeqList结构体中。
  6. 打印原始序列,并调用QuickSort函数对序列进行排序。在排序过程中,每次交换元素后,打印一次排序后的序列。
  7. 打开output.txt文件,将排序结果写入该文件中。
  8. 关闭文件并输出提示信息。

整体来说,这段代码是通过递归实现快速排序算法,具有一定的可读性和可维护性。然而,代码中可能存在一些潜在的问题,如输入数据的有效性检查不够严格、文件打开失败的错误处理等,可以进行进一步的改进。


原文地址: https://www.cveoy.top/t/topic/pOgg 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录