实现冒泡、选择排序、快速排序等算法,设计一个菜单,用户可以通过菜单选择所需的排序算法进行排序,并对排序结果进行分析。c语言带输入
时间: 2024-12-25 12:27:48 浏览: 4
在C语言中,我们可以创建一个简单的命令行程序,提供冒泡排序、选择排序和快速排序的选择菜单。首先,我们定义这些排序函数,然后编写主程序来接收用户的输入并调用相应的函数。这里是一个基本的示例:
```c
#include <stdio.h>
#include <string.h>
// 定义排序函数
void bubble_sort(int arr[], int n) {
for (int i = 0; i < n - 1; ++i) {
for (int j = 0; j < n - i - 1; ++j) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
void selection_sort(int arr[], int n) {
for (int i = 0; i < n - 1; ++i) {
int min_idx = i;
for (int j = i + 1; j < n; ++j) {
if (arr[j] < arr[min_idx])
min_idx = j;
}
int temp = arr[i];
arr[i] = arr[min_idx];
arr[min_idx] = temp;
}
}
void quick_sort(int arr[], int low, int high) {
if (low < high) {
int pivot_index = partition(arr, low, high);
quick_sort(arr, low, pivot_index - 1);
quick_sort(arr, pivot_index + 1, high);
}
}
// 用于分割数组
int partition(int arr[], int low, int high) {
int pivot = arr[high];
int i = (low - 1);
for (int j = low; j <= high - 1; j++) {
if (arr[j] < pivot) {
i++;
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
int temp = arr[i + 1];
arr[i + 1] = arr[high];
arr[high] = temp;
return i + 1;
}
// 主函数
int main() {
int choice, size, *arr, num;
printf("选择排序算法:\n");
printf("1. 冒泡排序\n2. 选择排序\n3. 快速排序\n");
scanf("%d", &choice);
switch(choice) {
case 1:
printf("请输入排序前的整数数组元素个数(至少3个): ");
scanf("%d", &size);
arr = (int*)malloc(size * sizeof(int));
printf("请输入数组元素: ");
for (int i = 0; i < size; ++i)
scanf("%d", &arr[i]);
bubble_sort(arr, size);
// 输出排序后的数组
printf("排序后数组: ");
for (int i = 0; i < size; ++i)
printf("%d ", arr[i]);
break;
case 2:
// 同样处理选择排序
case 3:
// 处理快速排序
// ...
break;
default:
printf("无效选择, 请重新运行程序并选择一个排序算法。\n");
return 1;
}
free(arr); // 释放内存
return 0;
}
```
阅读全文