微风伴清风 2018-12-26 16:02 采纳率: 0%
浏览 404

怎么可以将快速排序和归并排序结合到一起啊

#include
#include

void swap(int *a,int low,int high)//交换
{
int tmp = a[low];
a[low] = a[high];
a[high] = tmp;
}

int partition(int *a,int low,int high)//寻找枢纽值
{
while (low < high)
{
while ((low < high) && (a[low] <= a[high]))
high--;

    swap(a, low, high);

    while ((low < high) && (a[low] <= a[high]))
        low++;

    swap(a, low, high);
}
return low;//当low=high时,坐标即枢纽

}

void quickSort(int *a,int low,int high)//快速排序
{
if (low >= high)
return;//退出条件
int pivot = partition(a, low, high);//第一步,寻找枢纽值
quickSort(a, low, pivot - 1);//对枢纽值左边的序列快速排序
quickSort(a, pivot + 1, high);//对枢纽值右边的序列快速排序
}

void main()
{
int a[10] = { 1, 9, 5, 4, 2, 7, 8, 6, 3, 0 };
quickSort(a, 0, 9);
for (int i = 0; i < 10; i++)
printf("%d ", a[i]);
system("pause");
}

#include
#include

void merge(int *des,int *src,int size,int low,int mid,int high)//归并
{
int i = low;
int j = 0;
int k = 0;
j = mid + 1;
while ((low <= mid) && (j <= high))
{
if (src[low] < src[j])
des[i++] = src[low++];
else
des[i++] = src[j++];
}
while (low <= mid)
des[i++] = src[low++];
while (j <= high)
des[i++] = src[j++];
}

void sort(int *des, int *src, int size,int low,int high)//归并排序
{
if (low == high)
{
des[low] = src[low];//重要
return;
}
int *space = (int *)malloc(size*sizeof(int));//开辟临时空间
int mid = (low + high) / 2;//等分
sort(space, src, size, low, mid);//对左序列归并排序
sort(space, src, size, mid + 1, high);//对有序列归并排序
merge(des, space, size, low, mid, high);//把左序列和右序列归并
free(space);
}

void main()
{
int a[10] = { 1, 9, 4, 7, 3, 2, 5, 6, 0, 8 };
int b[10] = { 0 };
sort(b, a, 10, 0, 9);
for (int i = 0; i < 10; i++)
printf("%d ", b[i]);
system("pause");
}

  • 写回答

2条回答 默认 最新

  • 望闻问切q 2018-12-26 08:06
    关注

    本来就是两种基础排序算法你合并到一起又有什么用呢

    评论

报告相同问题?

悬赏问题

  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services