zoukankan      html  css  js  c++  java
  • 快速排序及其应用

    1,快排

    int partion(int *x,int low,int high){
    
       int temp=x[low];
       int i=low;
       int j=high+1;
    
       while(true){
         while(x[++i]<temp);
         while(x[--j]>temp);
         if(i>=j) break;
         swap(x[i],x[j]);
       }
       x[low]=x[j];
       x[j]=temp;
       return j;
    }
    int quickpass(int *x,int low,int high){
        if(low<high){
            int p=partion(x,low,high);
            quickpass(x,low,p-1);
            quickpass(x,p+1,high);
        }
    }

    2,根据快排中的partion函数可以有很多的变形

    求数组的第k小的元素

    //求第k小的元素
    int mink(int *m,int low,int high,int k){
    
        if(low==high) return m[low];
        int f=partion(m,low,high);
        //左边的元素的个数
    int lnum=f-low+1; if(lnum>=k) return mink(m,low,f,k); else return mink(m,f+1,high,k-lnum); }
  • 相关阅读:
    第十周作业--阅读(五一)
    第九周作业
    第八周作业
    第七周作业
    第六周作业
    模板
    第五周作业
    第四周作业
    第三周作业
    文件
  • 原文地址:https://www.cnblogs.com/Coder-Pig/p/5890072.html
Copyright © 2011-2022 走看看