zoukankan      html  css  js  c++  java
  • 归并排序算法C++实现

    归并排序算法是几种排序算法里面时间性能较好的了为O(nlogn)

    归并排序时分治法的一个典型应用,它先将要排序的序列分成两分,分别对每一份用归并排序尽心排序,然后在将两份合并在一起,形成一个有序 的序序列。

    code
    1 #include <iostream>
    2  usingnamespace std;
    3
    4#define MAX 10
    5#define INFINITE 0xFFFFF
    6 void Merg(int A[], int p, int q, int r)
    7 {
    8 int R1[MAX], R2[MAX];
    9 int n = r-p;
    10 int i,j;
    11 for (i=p; i<q+1; i++)
    12 {
    13 R1[i-p] = A[i];
    14 }
    15 R1[q-p+1] = INFINITE;
    16 for (j=q+1; j<r+1; j++)
    17 {
    18 R2[j-q-1] = A[j];
    19 }
    20 R2[r-q] = INFINITE;
    21 i =0;
    22 j =0;
    23 int k;
    24 for(k=p; k<r+1; k++)
    25 {
    26 if(R1[i] > R2[j]){
    27 A[k] = R2[j++];
    28 }
    29 else{
    30 A[k] = R1[i++];
    31 }
    32 }
    33 }
    34 void merg_sort(int A[], int p, int q)
    35 {
    36 if(q-p>0){
    37 merg_sort(A, p, (q+p)/2);  //对前部分进行归并排序
    38 merg_sort(A, (q+p)/2+1, q); //对后部分进行归并排序
    39 Merg(A, p, (q+p)/2, q);     //将两部分合并
    40 }
    41 }
    42
    43 int main()
    44 {
    45 int A[MAX] = {78,14,13,52,55,98,96,64,35,80};
    46 merg_sort(A, 0,MAX-1);
    47 for(int i=0; i<MAX; i++)
    48 {
    49 cout << A[i] <<"";
    50 }
    51 cout << endl;
    52 return0;
    53 }
  • 相关阅读:
    MVC三层架构
    Cookie
    request (请求转发)
    response 重定向
    HttpServletResponse(响应),实现文件下载,实现验证码功能
    HTTP报文格式
    基于UUID生成短ID
    一致性hash应用到redis
    spring-mysqlclient开源了
    Effection Go
  • 原文地址:https://www.cnblogs.com/lovesaber/p/1882362.html
Copyright © 2011-2022 走看看