C++算法——快速排序
快速排序的思路
快速排序的思路肥肠简单
就是根据一个基准数,分出左边和右边的数组,排序,最后排序完输出即可
也采用了一点点的分治
代码
#include <iostream>
using namespace std;
const int N = 100010;
int a[N],b[N],c[N*2];
void merge(int a[],int n,int b[],int m)
{
int i = 0,j = 0;
int tot = 0;
while(i < n && j < m)
{
if(a[i] < b[j])
{
c[tot++] = a[i];
i++;
}
else
{
c[tot++] = b[j];
j++;
}
}
while(i < n) c[tot++] = a[i++];
while(j < m) c[tot++] = b[j++];
for(int i = 0;i < tot;i++)
{
printf("%d ",c[i]);
}
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i = 0;i < n;i++)
{
scanf("%d",&a[i]);
}
for(int j = 0;j < m;j++)
{
scanf("%d",&b[j]);
}
merge(a,n,b,m);
return 0;
}