#include<stdio.h>
#include<iostream>
using namespace std;
#define max 100
int a[max];
int b[max];
int c[max];
int n;
//快速排序
void quick_sort(int low, int high)
{
if (low > high)
return;
int i = low, j = high,temp=a[low];
while (i != j)
{
while (i<j && a[j]>temp)
j--;
if (i < j)
a[i] = a[j];
while (i < j && a[i] < temp)
i++;
if (i < j)
a[j] = a[i];
}
a[i] = temp;
quick_sort(low, i - 1);
quick_sort(i + 1, high);
}
//归并排序
void merge_sort(int low, int mid, int high)
{
int i = low, j = mid+1, k = low;
while (i <= mid && j <= high)
{
if (c[i] < c[j])
b[k++] = c[i++];
else
b[k++] = c[j++];
}
while (i <= mid)
b[k++] = c[i++];
while (j <= high)
b[k++] = c[j++];
for (int i = low; i <= high; i++)
c[i] = b[i];
}
void merge(int low, int high)
{
if (low<high)
{
int mid = (low + high) / 2;
merge(low, mid);
merge(mid + 1, high);
merge_sort(low, mid, high);
}
}
int main()
{
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
for (int i = 1; i <= n; i++)
cin >> c[i];
merge(1, n);
quick_sort(1, n);
for (int i = 1; i <= n; i++)
cout << a[i]<<" ";
cout << endl;
for (int i = 1; i <= n; i++)
cout << c[i] << " ";
}
基于分治法的排序
最新推荐文章于 2024-10-20 10:43:07 发布