zoukankan      html  css  js  c++  java
  • 排序算法积累(4)-------归并排序

    一、归并排序思路

      大体思路就是将数据在中位数的位置分成两个区间,一直重复,直到最后节点只有一个数

      

    二、程序

      

    #include <iostream>  
    #include <iomanip>  
    #include <string>
    //用setprecision(n)设置精度,其中n表示精确到小数点后n位  
    
    using namespace std;
     
    void merge(int arr[], int l, int m, int r) {  //归并
        int *help = new int[r - l + 1];
        int i = 0;
        int p1 = l;
        int p2 = m + 1;
        while (p1 <= m && p2 <= r) {
            help[i++] = arr[p1] < arr[p2] ? arr[p1++] : arr[p2++];
        }
        while (p1 <= m) {
            help[i++] = arr[p1++];
        }
        while (p2 <= r) {
            help[i++] = arr[p2++];
        }
        help[i] = NULL;
        for (i = 0; help[i]!=NULL; i++) {
            arr[l + i] = help[i];
        }
    }
    void mergeSort(int arr[], int l, int r) { //分类
        if (l == r) {
            return;
        }
        int mid = l + ((r - l) >> 1);
        mergeSort(arr, l, mid);
        mergeSort(arr, mid + 1, r);
        merge(arr, l, mid, r);
    }
    
    void mergeSort(int arr[],int size) {   //合并上面两个函数
        if (arr == NULL || size < 2) {
            return;
        }
        mergeSort(arr, 0, size - 1);
    }
    
    int main()
    {
        int array[9] = { 5, 4, 9, 6, 3, 8, 5, 4, 2 };
        mergeSort(array, 9);          //调用
        for (int i = 0; i < 9; i++)
        {
            cout << array[i] << ' ';
        }
        return 0;
    }
  • 相关阅读:
    JavaScript中的的面向对象中的一些知识
    JavaScript中的Function
    jq 表格全选案例
    jq 美女相册案例
    jq 属性操作
    jq tab图片切换
    jq class操作
    jq css操作
    jquery 淘宝案例
    jquery 鼠标点击下滑案例
  • 原文地址:https://www.cnblogs.com/panlangen/p/7890077.html
Copyright © 2011-2022 走看看