zoukankan      html  css  js  c++  java
  • 算法笔记 --- Merge Sort

    #include <iostream>
    
    using namespace std;
    class MergeSort {
    public:
        int* mergeSort(int* A, int n) {
            mergeSortRecursive(A, 0, n);
            return A;
        }
        void mergeSortRecursive(int* A, int index_beg, int index_end){
            if(index_end - index_beg > 1){
                int median = (index_beg + index_end)/2;
                mergeSortRecursive(A, index_beg, median);
                mergeSortRecursive(A, median, index_end);
                merge(A, index_beg, median, index_end);
            }
        }
        void merge(int* A, int index_beg, int median, int index_end){
            int index1 = index_beg;
            int index2 = median;
            int sort_tmp[100];
            int index_tmp = 0;
            while(index1 < median && index2 < index_end){
                if(A[index1] < A[index2]){
                    sort_tmp[index_tmp++] = A[index1++];
                }else{
                    sort_tmp[index_tmp++] = A[index2++];
                }
            }
            while(index1 < median)
                sort_tmp[index_tmp++] = A[index1++];
            while(index2 < index_end)
                sort_tmp[index_tmp++] = A[index2++];
            for(int i = index_beg; i < index_end; i++){
                A[i] = sort_tmp[i - index_beg];
            }
        }
    };
    int main()
    {
        int a[6] = {1, 5, 7, 2, 9, 4};
        int* res;
        MergeSort sorter;
        res = sorter.mergeSort(a, 6);
        cout<<"after sorting:"<<endl;
        for(int i = 0; i < 6; i++){
            cout<<res[i]<<" ";
        }
        cout<<endl;
       
        return 0;
    }
  • 相关阅读:
    git下载指定的版本
    QT中定时器
    makefile 中添加依赖的库文件
    Qt 出现“undefined reference to `vtable for”
    qt程序启动播放动画
    常用正则表达式
    当你纠结时,请打开这31个锦…
    android mk详解
    C++日志系统log4cxx使用总结
    qt 坐标变换
  • 原文地址:https://www.cnblogs.com/zhongzhiqiang/p/5791086.html
Copyright © 2011-2022 走看看