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

    我看的快速排序解析:https://blog.csdn.net/na_hanqiannan/article/details/82080980

    代码:

    #include<iostream>
    #include<cstring>
    #define N 100000+10
    using namespace std;
    int a[N],n,s;
    void q_sort(int l,int r)
    {
        int i=l,j=r,pivot=a[l],index=l;
        //i从左边开始查找
        //j从右边往左查找
        //pivot是坑
        //index是坑的位置
        while(i<=j){//如果i》j的话,交换的目的就相反
            while(a[j]>pivot&&i<=j)j--;//从右往左找到一个《=pivot的数
            if(i<=j){
                a[index]=a[j];//填坑
                index=j;//坑的位置改变
                i++;//其实index要么在I上要么在j上,所以坑填好了I++避免下次有找到他自己
            }
            while(a[i]<pivot&&i<=j)i++;//和上面差不多
            if(i<=j){
                a[index]=a[i];
                index=i;
                j--;
            }
        }
        a[index]=pivot;//最后的坑补上
      if(l<index)q_sort(l,index-1);
      if(index<r)q_sort(index+1,r);
    return;
    }
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++)cin>>a[i];
        q_sort(1,n);
        for(int i=1;i<=n;i++)cout<<a[i]<<" ";
        cout<<endl;
    }
  • 相关阅读:
    软件工程——股票利润
    软件工程——爬楼梯
    总结
    团队4
    团队答辩
    团队3
    软工2
    团队合作(1)
    软件工程第二次作业
    软件工程第一次作业(2)
  • 原文地址:https://www.cnblogs.com/jzxnl/p/11070764.html
Copyright © 2011-2022 走看看