zoukankan      html  css  js  c++  java
  • 第k个数(排序)

    给定一个长度为n的整数数列,以及一个整数k,请用快速选择算法求出数列的第k小的数是多少。

    输入格式

    第一行包含两个整数 n 和 k。

    第二行包含 n 个整数(所有整数均在1~109109范围内),表示整数数列。

    输出格式

    输出一个整数,表示数列的第k小数。

    数据范围

    1n1000001≤n≤100000,
    1kn1≤k≤n

    输入样例:

    5 3
    2 4 1 5 3
    

    输出样例:

    3

    快速排序,时间O(n*logn)
           import java.util.Scanner;
    
           public class Main {
               public static void quick_sort(int a[],int l,int r){
                     if(l>=r) return;
                     int i=l-1,j=r+1,x=a[l+r>>1];
                     while(i<j){
                           while(a[++i]<x);
                           while(a[--j]>x);
                           if(i<j){
                               int t=a[i];
                               a[i]=a[j];
                               a[j]=t;
                           }
                     }
                     quick_sort(a,l,j);
                     quick_sort(a,j+1,r);
               }
               public static void main(String[] args) {
                    Scanner scan=new Scanner(System.in);
                    int n=scan.nextInt();
                    int k=scan.nextInt();
                    int a[]=new int[n];
                    for(int i=0;i<n;i++) a[i]=scan.nextInt();
                    quick_sort(a,0,n-1);
                    System.out.println(a[k-1]);
            }
    }
  • 相关阅读:
    第三章 系统总线
    人工神经网络及其应用
    专家系统
    遗传算法
    搜索算法策略
    js判断有无属性及新添属性
    vue 文件插件 Vetur 设置说明官网
    vue 获得当前无素并做相应处理
    VUE style 绑定
    vue入门基础知识点测试
  • 原文地址:https://www.cnblogs.com/qdu-lkc/p/12184681.html
Copyright © 2011-2022 走看看