C语言快速排序算法实现 - 详细代码解析
{ "title": "C语言快速排序算法实现 - 详细代码解析", "description": "本代码示例展示了使用 C 语言实现快速排序算法的步骤,包括数据结构定义、快速排序函数、分区函数、交换函数等。代码中包含详细注释,并提供输入、输出和文件操作示例。", "keywords": "快速排序, 算法, C语言, 数据结构, 排序, 递归, 分区, 交换, 文件操作, 代码示例", "content": "#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;
}
原文地址: https://www.cveoy.top/t/topic/pOfC 著作权归作者所有。请勿转载和采集!