用c语言编程解决问题:输入一组数据,以0作为输入的结束,分别采用冒泡排序、选择排序、快速排序的方法,对其进行从小到大的排序,给出排序后的结果
时间: 2024-02-17 20:03:21 浏览: 17
好的,这里是使用 C 语言编写的代码,可以实现对输入数据进行冒泡排序、选择排序和快速排序的功能,最后输出排序后的结果:
```c
#include <stdio.h>
void bubble_sort(int arr[], int n)
{
int i, j;
for (i = 0; i < n; i++)
{
for (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)
{
int i, j, min_idx;
for (i = 0; i < n; i++)
{
min_idx = i;
for (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 left, int right)
{
if (left >= right)
{
return;
}
int pivot = arr[left];
int i = left, j = right;
while (i < j)
{
while (i < j && arr[j] >= pivot)
{
j--;
}
if (i < j)
{
arr[i] = arr[j];
}
while (i < j && arr[i] < pivot)
{
i++;
}
if (i < j)
{
arr[j] = arr[i];
}
}
arr[i] = pivot;
quick_sort(arr, left, i-1);
quick_sort(arr, i+1, right);
}
int main()
{
int arr[100], n = 0, i;
while (1)
{
int x;
scanf("%d", &x);
if (x == 0)
{
break;
}
arr[n++] = x;
}
// 对数据进行排序
bubble_sort(arr, n);
selection_sort(arr, n);
quick_sort(arr, 0, n-1);
// 输出排序后的结果
printf("冒泡排序的结果为:");
for (i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
printf("选择排序的结果为:");
for (i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
printf("快速排序的结果为:");
for (i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
代码中,`bubble_sort`、`selection_sort`、`quick_sort` 分别实现了冒泡排序、选择排序和快速排序算法。在主程序中,通过循环读入输入数据,当读到 0 时跳出循环,把输入的数字保存在数组 `arr` 中。然后分别对 `arr` 进行三种排序算法,得到排序后的结果。最后,使用 `printf` 函数输出排序后的结果。
希望这段代码能对你有所帮助!