zoukankan      html  css  js  c++  java
  • 算法题:找出一个数组中依次最大的k个元素

    package arithmetic;
    
    import java.util.Arrays;
    
    /**
     * 找出一个数组中依次最大的k个元素
     * @author SHI
     */
    public class FindMaxFigure {
        public static void main(String[] args) {
            int[] a=new int[]{1,5,-1,8,0,2};
            System.out.println(Arrays.toString(findBigFigure(a, 3)));
        }
        
        /**
         * 想法:找到一个最大的元素之后,就依次存放到数组的最前面去,直到满足k个为止
         * @param a  原始数组
         * @param k  
         * @return
         */
        public static int[] findBigFigure(int[] a,int k) {
            int[] temp = new int[k];
            int m = 0;
            int index = 0;
            
            for (; index < k; index++) {
                int max = a[index];//假设数组中的某个元素是最大的(这里每循环依次,取得的数组元素下标依次是0,1,2...)
                int flag = 0;
                
                for (int j = index+1; j < a.length; j++) {
                    if(max < a[j]) {
                        max = a[j];
                        flag = j;//保存找到的最大数字的下标
                    }
                }
                //将最大数字依次交换到数组的最前面
                int t = a[index];
                a[index] = a[flag];
                a[flag] = t;
                
                //将找到的数保存到数组中
                temp[m++] = max;
            }
            
            return temp;
        } 
    }
  • 相关阅读:
    匈牙利算法自主总结
    luogu P2071 座位安排
    luogu P1613 跑路
    luogu P1250 种树
    luogu P1744 采购特价商品
    网络流
    其他图论
    组合计数
    小技巧
    矩阵&&高斯消元
  • 原文地址:https://www.cnblogs.com/shi-blog/p/4254368.html
Copyright © 2011-2022 走看看