因为懒,就直接输出了三遍,别学我
【问题描述】输入一组数据,以0作为输入的结束,分别采用冒泡排序、选择排序、快速排序的方法,对其进行从小到大的排序,给出排序后的结果。
【输入形式】一组数据,以0作为输入的结束
【输出形式】三种排序后的结果
【样例输入】
9 8 4 5 7 2 10 6 0
【样例输出】
2 4 5 6 7 8 9 10
2 4 5 6 7 8 9 10
2 4 5 6 7 8 9 10
#include <iostream>
using namespace std;
void quicksort_plus(int *a, int begin, int end)
{
int mid = a[(begin + end) / 2];
int i = begin, j = end;
do
{
while (a[i] < mid)
i++;
while (a[j] > mid)
j--;
if (i <= j)
{
swap(a[i], a[j]);
i++;
j--;
}
} while (i < j);
if (j > begin)
quicksort_plus(a, begin, j);
if (i < end)
quicksort_plus(a, i, end);
}
void print(int *arr, int n)
{
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
cout << endl;
}
int main()
{
int a[500];
int len = 0;
while (1)
{
int data;
cin >> data;
if (data)
{
a[len++] = data;
}
else
break;
}
quicksort_plus(a, 0, len - 1);
print(a, len);
print(a, len);
print(a, len);
}