首页 > 代码库 > 算法题:找出一个数组中依次最大的k个元素

算法题:找出一个数组中依次最大的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;    } }

算法题:找出一个数组中依次最大的k个元素