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

    推荐一个网站 https://visualgo.net/zh  这个网站可以看到很多算法的动态演绎

    大概就是这个亚子,可以自己去看归并排序

    下边给出归并排序的代码

     1 #include <bits/stdc++.h>
     2 #define ll long long
     3 using namespace std;
     4 
     5 const int maxn=501000;
     6 ll n,m,i,j,k,a[maxn],b[maxn],cnt;
     7 
     8 void mergesort(ll a[],ll l,ll r)
     9 {
    10     if (r-l<1) return ;
    11     ll mid=(l+r)>>1;
    12     mergesort(a,l,mid);
    13     mergesort(a,mid+1,r);
    14     ll i=l,j=mid+1;             // i是第一段序列的下标, j是第二段序列的下标
    15     for (ll k=l;k<=r;k++){
    16         if (j>r || i<=mid && a[i]<=a[j])     // 判断第一段和第二段取出的数哪个更小,将其存入合并序列,并继续向下扫描
    17             b[k]=a[i++];
    18         else{
    19             cnt+=mid-i+1;
    20             b[k]=a[j++];
    21         }
    22     }
    23     for (ll k=l;k<=r;k++) a[k]=b[k];
    24 }
    25 
    26 int main()
    27 {
    28     cin>>n;
    29     for (i=1;i<=n;i++) cin>>a[i];
    30     cnt=0;
    31     mergesort(a,1,n);
    32     cout<<cnt<<endl;        //cnt是让序列a有序的最小交换次数
    33     for(int i=1;i<=n;i++) cout<<a[i]<<' ';
    34     return 0;
    35 }
  • 相关阅读:
    百度搜索技巧
    phpstorm知识点
    A-Z
    边框
    display
    布局
    盒模型
    浮动
    字体与图标
    pselect 问题
  • 原文地址:https://www.cnblogs.com/lilibuxiangtle/p/11361820.html
Copyright © 2011-2022 走看看