zoukankan      html  css  js  c++  java
  • 剑指 Offer 40. 最小的k个数

    public int[] getLeastNumbers(int[] arr, int k) {
            //最小的k个数
            Arrays.sort(arr);
            return Arrays.copyOfRange(arr,0,k);
        }

    public int[] getLeastNumbers(int[] arr, int k) {
            int n = arr.length;
            int[] res = new int[k];
            int t = k-1;
            //冒泡排序
            for(int i = 0;i<k;i++){
                int j = 1;
                for(;j<n-i;j++){
                    if(arr[j]>arr[j-1]){
                        int temp = arr[j-1];
                        arr[j-1] = arr[j];
                        arr[j] = temp;
                    }
                }
                res[t--] = arr[j-1];
            }
            return res;
        }

     为啥???????????

    public int[] getLeastNumbers(int[] arr, int k) {
            //比第k个数字小的数字都位于左边,比第k个数字大的数都位于右边
            int len = arr.length;
            int i = 0,j = len-1;
            while(i<=k-1 && j>=k-1){
                boolean b = false;
                while (i<k-1){
                    if(arr[i]>arr[k-1]){
                        swap(i,k-1,arr);
                        b = true;
                    }
                    i++;
                }
                while(j>k-1){
                    if(arr[j]<arr[k-1]){
                        swap(j,k-1,arr);
                        b = true;
                    }
                    j--;
                }
                if(!b){
                    return Arrays.copyOfRange(arr,0,k);
                }
                i = 0;
                j = len-1;
            }
            return Arrays.copyOfRange(arr,0,k);
        }
        private void swap(int i, int small, int[] nums) {
            int temp = nums[i];
            nums[i] = nums[small];
            nums[small] = temp;
        }

    我的前方是万里征途,星辰大海!!
  • 相关阅读:
    C# 课堂总结2-数据类型及转换方式
    C# 课堂总结1-二进制转换
    C++
    C++ 程序设计语言
    VS编译器问题总结
    go 笔记
    SIP协议 会话发起协议(二)
    SIP协议 会话发起协议(一)
    201707 一些好的文章
    编程拾穗
  • 原文地址:https://www.cnblogs.com/taoyuxin/p/13539184.html
Copyright © 2011-2022 走看看