zoukankan      html  css  js  c++  java
  • 6-归并排序

    #include <iostream>
    #include <cstring>
    #include <stdlib.h>
    using namespace std;

    void merge(int *R, int low, int mid, int high){  //将相邻的数组合并
        int *r;
        r = (int *)malloc((high - low + 1)*sizeof(int));
        int i = low, j = mid + 1, p = 0;
        while(i <= mid && j <= high){
            r[p++] = ((R[i] > R[j]) ? R[j++] : R[i++]);
        }
        while(i <= mid){
            r[p++] = R[i++];
        }
        while(j <= high){
            r[p++] = R[j++];
        }
        for(i = low, j = 0; j < p; j++, i++)
            R[i] = r[j];
    }

    void MergeSort(int *R, int low, int high){
        int mid;
        if(low < high){   // 注意递归退出条件 (while or if)
            mid = (low + high) / 2;
            MergeSort(R, low, mid);
            MergeSort(R, mid + 1, high);
            merge(R, low, mid, high);
        }
    }

    int main(){
        int R[1000];
        int low = 1, high = 0;
        cin >> high;
        cout << "排序前的数组:"  << endl;
        for(int i = 1; i <= high; i++){
            cin >> R[i];
        }
        MergeSort(R, low, high);
        cout << "排序后:" << endl;
        for(int i = 1; i <= high; i++)
            cout << R[i] << " ";
        return 0;
    }

  • 相关阅读:
    多点触摸的一些代码
    精灵跳跃练习
    svn安装所遇到的几个问题[转载]
    简易包边字画法
    http和socket简介
    ant使用笔记
    j2se图片拖拽练习
    A星寻路示例
    迅为瑞芯微iTOP3399开发板资料更新
    迅为i.MX6Q开发板NXP恩智浦ARM安卓linux开发板
  • 原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/7306512.html
Copyright © 2011-2022 走看看