博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法设计与分析 上机题Mergesort
阅读量:7044 次
发布时间:2019-06-28

本文共 1137 字,大约阅读时间需要 3 分钟。

#include <iostream>

using namespace std;

#define N 100

int g_array[N];     //存放输入的数字

static int count;   //存放元素的个数

// 初始化函数

void Initial()
{
    cout << "请输入元素的个数:";
    cin >> count;
    cout << "请输入" << count << "个元素:";
    for(int i = 0; i < count; i ++)
    {
        cin >> g_array[i];
    }
}

//合并函数

void Merge(int a[], int l, int m, int r)
{
    int i = l, j = m+1, k = l;
    int b[N];
    while(i <= m && j <= r)
    {
        if(a[i] <= a[j])
        {
            b[k++] = a[i++];
        }
        else
        {
            b[k++] = a[j++];
        }
    }

    if(i > m)

    {
        for(int p = j; p <= r; p ++)
        {
            b[k++] = a[p];
        }
    }
    else
    {
        for(int p = i; p <= m; p ++)
        {
            b[k++] = a[p];
        }
    }

    //把b[]中排好的元素copy到a[]中

    for(int q = l; q <= r; q ++)
    {
        a[q] = b[q];
    }
}

//  归并排序 递归算法表示

void Bottomupsort(int a[], int left, int right)
{
    if(left < right)    //数组至少要有两个元素
    {
        int i = (right + left)/2;
        Bottomupsort(a, left, i);
        Bottomupsort(a, i+1, right);
        Merge(a, left, i, right); //把left到right的元素排序好
    }
}

//打印排好序的数组

void Print()
{
    cout << "经过Bottomupsort后:";
    for(int i = 0; i < count; i ++)
    {
        cout << g_array[i] << " ";
    }
    cout << endl;
}

int main()

{
    Initial();
    if(count > 1)
    {
        Bottomupsort(g_array, 0, count-1);
        Print();
    }
    else if(count == 1)
    {
        Print();
    }
    system("pause");
    return 0;
}

转载地址:http://kpeal.baihongyu.com/

你可能感兴趣的文章
调试java8 函数式
查看>>
Intellij使用心得(二) -- 关于启动Web服务器的几个事
查看>>
linux源代码安装软件
查看>>
我的友情链接
查看>>
Magento2 时间转化
查看>>
android Webview直接打开 不让它跳到内部的浏览器
查看>>
shell基础day11
查看>>
Golang 中使用 JSON 的小技巧
查看>>
VMware7安装CentOS6.5教程
查看>>
控制 Memory 和 CPU 资源的使用
查看>>
怎么用VBA在excel中指定位置画图表? 如怎么用VBA在 A7:G13位置画出图标
查看>>
makefile扩展
查看>>
SCOM 2012 SP1 监控网络设备 概览
查看>>
IBM x3650硬盘故障
查看>>
高并发架构系列:Redis的内存回收原理,及内存过期淘汰策略详解
查看>>
Python模块optparse学习
查看>>
asp带验证码的用户登录及校验代码实现
查看>>
深入理解 String, StringBuffer 与 StringBuilder 的区别
查看>>
使用局jQuery提交file
查看>>
使用Parse内付费服务出现的Error Domain=Parse Code=146 "The operation couldn’t be completed....
查看>>