美文网首页
分治应用 排序

分治应用 排序

作者: 壹顾倾城 | 来源:发表于2021-01-19 16:55 被阅读0次
/********************************
* 程序名称:分治应用 
* 开发时间:
*******************************/
#include <iostream>
#include <cstdio>

using namespace std;

int s[100001], b[100001];

//合并 
void mergeArray(int left, int m, int right) {
    int l1, r1, l2, r2, k = 0;
    l1 = left;
    r1 = m;
    l2 = m + 1;
    r2 = right;
    
    while(l1 <= r1 && l2 <= r2) {
        if(s[l1] < s[l2]) {
            b[k] = s[l1];
            k ++;
            l1 ++;
        } else {
            b[k] = s[l2];
            k ++;
            l2 ++;
        }
        
    } 
    /*剩余的数合并*/
    while(l1 <= r1) {
        b[k] = s[l1];
        k ++;
        l1 ++;
    }
    /*剩余的数合并*/
    while(l2 <= r2) {
        b[k] = s[l2];
        k ++;
        l2 ++;
    }
    
    for(int i=0; i<k; i++) {
        s[left+i] = b[i];
    }
}
//排序合并 
void mergeSort(int left, int right) {
    int mid;
    if (left < right) {
        mid = (left + right) / 2;
        mergeSort(left, mid);      //左边排序 
        mergeSort(mid+1, right);   //右边排序 
        mergeArray(left, mid, right);  //左右合并 
    }
} 

//main() star
int main() {
    //code here
    int n;
    cin >> n;
    
    for(int i=0; i<n; i++) {
        cin >>s[i];
    } 
    
    mergeSort(0, n -1);
    
    for(int i=0; i<n; i++) {
        cout << s[i] <<endl;
    } 
    
    return 0;
}

测试1:

5
2 5 1 4 6
1
2
4
5
6

--------------------------------
Process exited after 4.53 seconds with return value 0
请按任意键继续. . .

测试2:

10
2 5 8 7 4 1 3 6 9 23
1
2
3
4
5
6
7
8
9
23

--------------------------------
Process exited after 7.456 seconds with return value 0
请按任意键继续. . .

相关文章

  • 分治应用 排序

    测试1: 测试2:

  • python 实现各种排序算法

    总结了一下常见集中排序的算法。 归并排序 归并排序也称合并排序,是分治法的典型应用。分治思想是将每个问题分解成个个...

  • python 实现各种排序算法!

    总结了一下常见集中排序的算法。 归并排序 归并排序也称合并排序,是分治法的典型应用。分治思想是将每个问题分解成个个...

  • python实现归并算法

    归并排序是采用分治法的一个非常典型的应用,另一个可以采用分治法的是快速排序,归并算法比快速排序速度稍低。归并排序的...

  • 用 python 实现各种排序算法

    归并排序 归并排序也称合并排序,是分治法的典型应用。分治思想是将每个问题分解成个个小问题,将每个小问题解决,然后合...

  • 数据结构与算法之美-快速排序

    QuickSort - 快速排序 核心:快速排序是采用分治思想的典型应用。 基本思想: 从要排序数组中下标从 p ...

  • 排序算法之归并排序

    介绍 归并排序,是创建在归并操作上的一种有效的排序算法。该算法是采用分治法的一个非常典型的应用,且各层分治递归可以...

  • 数据结构与算法之美-归并排序

    Merge Sort - 归并排序 核心:归并排序是采用分治法的一个非常典型的应用。 归并排序的思想就是先递归分解...

  • 排序算法6:快速排序

    数据结构与算法 快速排序为应用最多的排序算法,因为快速二字而闻名。快速排序和归并排序一样,采用的都是分治思想。 分...

  • 数据结构与算法之美-主定理方法(master theorem)和

    1. Merge Sort - 归并排序 核心:归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归...

网友评论

      本文标题:分治应用 排序

      本文链接:https://www.haomeiwen.com/subject/pbcczktx.html