C语言快速排序算法实现 - 代码示例及分析
#include <stdio.h>\n#include <stdlib.h>\n#define MAX_SIZE 100\n\ntypedef struct {\n int data[MAX_SIZE];\n int length;\n} SeqList;\n\nvoid swap(int *a, int *b) {\n int temp = *a;\n *a = *b;\n *b = temp;\n}\n\nint Partition(SeqList *list, int low, int high) {\n int pivot=list->data[low];\n while (low < high) {\n while (low < high && list->data[high] >= pivot) high--;\n swap(&list->data[low], &list->data[high]);\n while (low < high && list->data[low] <= pivot) low++;\n swap(&list->data[low], &list->data[high]);\n }\n return low;\n}\n\nvoid QuickSort(SeqList list, int low, int high) {\n if (low < high) {\n int pivotPos = Partition(list, low, high);\n printf(" ");\n for (int i = 0; i < list->length; i++) {\n printf("%d ", list->data[i]);\n }\n printf("\n");\n QuickSort(list, low, pivotPos - 1);\n QuickSort(list, pivotPos + 1, high);\n }\n}\n\nint main() {\n int size;\n printf("请输入数据数量: ");\n scanf("%d", &size);\n if (size <= 0 || size > MAX_SIZE) {\n printf("数量过多,无效!\n");\n return 1;\n }\n\n SeqList list;\n \n printf("输入 %d 个整数:\n", size);\n for (int i = 0; i < size; i++) {\n scanf("%d", &list.data[i]);\n }\n list.length = size;\n\n printf("原始序列: ");\n for (int i = 0; i < list.length; i++) {\n printf("%d ", list->data[i]);\n }\n printf("\n");\n\n QuickSort(&list, 0, list.length - 1);\n\n FILE file = fopen("output.txt", "w");\n if (file == NULL) {\n printf("无法打开文件!\n");\n return 1;\n }\n\n fprintf(file, "排序结果: ");\n for (int i = 0; i < list.length; i++) {\n fprintf(file, "%d ", list->data[i]);\n }\n fprintf(file, "\n");\n\n fclose(file);\n printf("排序结果已存储在 output.txt 文件中。\n");\n\n return 0;\n}
原文地址: https://www.cveoy.top/t/topic/pOfv 著作权归作者所有。请勿转载和采集!