zoukankan      html  css  js  c++  java
  • 寻找第K大的数

    题目描述
    要求在N个不重复的整数中,找出第K大的整数 ,其中0<K<N<1000000
    输入
    输入第一行为两个正整数N K
    第二行为N个整数,输入保证这N个整数两两相异,每个整数的范围在-1000000到1000000之间
    输出
    输出第K大的整数值
    样例输入
    5 3
    3 2 4 5 1
    样例输出
    3

    代码如下:

     1 #include<iostream>
     2 #include<math.h>
     3 #include<string.h>
     4 #include<stdio.h>
     5 using namespace std;
     6   
     7 int arr[1000000];
     8    
     9 int devide(int begin,int end)
    10 {
    11     int key=arr[begin];
    12     int low=begin;
    13     int high=end;
    14     while(low<high)
    15     {
    16         while(low<high && arr[high]>=key)
    17            high--;
    18         arr[low]=arr[high];
    19         while(low<high && arr[low]<=key)
    20           low++;
    21         arr[high]=arr[low];
    22     }
    23     arr[low]=key;
    24     return low;
    25 }
    26    
    27 int Find(int begin,int end,int k)
    28 {
    29     int index=devide(begin,end);
    30     if(index==end-k+1)
    31       return index;
    32     else if(index<end-k+1)
    33       return Find(index+1,end,k);
    34     else if(index>end-k+1)
    35       return Find(begin,index-1,index-(end-k+1));
    36 //  return Find(begin,index,k-1);
    37 }
    38 
    39 int main()
    40 {
    41     int n,k;
    42     cin>>n>>k;
    43     memset(arr,0,sizeof(arr));
    44     for(int i=0;i<n;i++)
    45       cin>>arr[i];
    46     int index=Find(0,n,k);
    47     cout<<arr[index]<<endl;
    48 }
  • 相关阅读:
    CLR 对比 JVM
    unity drawcall测试
    UGUI 分页渐变居中效果
    几个ADB常用命令
    jQuery分步步骤
    jquery toast插件
    jQuery数字滚动(模拟网站人气、访问量递增)原创
    jQuery实用工具集
    scrollReveal.js – 页面滚动显示动画JS
    jquery轻量级数字动画插件jquery.countup.js
  • 原文地址:https://www.cnblogs.com/baigg1995/p/4583394.html
Copyright © 2011-2022 走看看