zoukankan      html  css  js  c++  java
  • (算法)Partition方法求数组第k大的数

    如题,下面直接贴出代码:

    #include <iostream>
    
    using namespace std;
    
    int Partition(int* A,int left,int right){
        int key=A[left];
        while(left<right){
            while(left<right && A[right]>=key)
                right--;
            if(left<right)  A[left]=A[right];
    
            while(left<right && A[left]<=key)
                left++;
            if(left<right)  A[right]=A[left];
        }
        A[left]=key;
        return left;
    }
    
    int findKthNum(int* A,int left,int right,int k){
        int index=Partition(A,left,right);
        if(index+1==k)
            return A[index];
        else if(index+1<k)
            findKthNum(A,index+1,right,k);
        else
            findKthNum(A,left,index-1,k);
    }
    
    int main()
    {
        int A[]={2,3,5,1,6,7,4};
        int len=sizeof(A)/sizeof(A[0]);
    
        cout << findKthNum(A,0,len-1,7) << endl;
        return 0;
    }
    

      

  • 相关阅读:
    form表单介绍
    if条件语句
    表格.html
    列表.html
    CSS Js链接HTML文件
    DQL
    mysql介绍
    第一次接触mysql
    逻辑运算、作用域问题、DOM
    Js数据类型具体分析
  • 原文地址:https://www.cnblogs.com/AndyJee/p/4722220.html
Copyright © 2011-2022 走看看