C语言快速排序算法实现 - 对整数序列进行排序并输出结果到文件
C语言快速排序算法实现
本程序使用C语言实现快速排序算法,对用户输入的整数序列进行排序,并将排序结果存储在文件output.txt中。程序使用经典的快速排序分区算法,并通过递归调用实现快速排序。
程序代码
#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("数量过多,无效!\n"); return 1; }
SeqList list; printf("输入 %d 个整数:\n", size); for (int i = 0; i < size; i++) { scanf("%d", &list.data[i]); } list.length = size; printf("原始序列: "); for (int i = 0; i < 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 < list.length; i++) { fprintf(file, "%d ", list.data[i]); } fprintf(file, "\n"); fclose(file); printf("排序结果已存储在 output.txt 文件中。\n"); return 0;}
程序说明
程序首先定义了一个结构体SeqList,用于存储整数序列。该结构体包含一个整型数组data和一个整型变量length,分别表示序列的数据和长度。
接下来,定义了一个swap函数,用于交换两个整数的值。
然后,实现了Partition函数,用于确定序列中某个元素的最终位置,并返回该位置。该函数使用的是经典的快速排序分区算法。
接着,实现了QuickSort函数,用于对序列进行快速排序。该函数首先确定序列中某个元素的最终位置,然后递归地对该元素左右两侧的子序列进行排序。
在main函数中,首先读取用户输入的数据数量,并进行合法性检查。然后,依次读取用户输入的整数,存储到SeqList结构体中,并打印原始序列。
接下来,调用QuickSort函数对序列进行排序,并在每次排序后打印排序结果。
最后,将排序结果写入文件output.txt中,并打印提示信息。
总结
整个程序的逻辑比较清晰,使用了递归的快速排序算法,并且在每次排序后都打印了排序结果,方便观察算法的执行过程。同时,还实现了将排序结果存储在文件中的功能,方便后续处理和查看排序结果。
原文地址: https://www.cveoy.top/t/topic/pOhn 著作权归作者所有。请勿转载和采集!