zoukankan      html  css  js  c++  java
  • java

    度度熊有一个N个数的数组,他想将数组从小到大 排好序,但是萌萌的度度熊只会下面这个操作:
    任取数组中的一个数然后将它放置在数组的最后一个位置。
    问最少操作多少次可以使得数组从小到大有序?


    输入描述:
    首先输入一个正整数N,接下来的一行输入N个整数。(N <= 50, 每个数的绝对值小于等于1000)

    输出描述:
    输出一个整数表示最少的操作次数。

    输入例子1:
    4
    19 7 8 25

    输出例子1:
    2

    思路:取第一个数,如果它不是当前最小数字,说明它需要放到最后以完成最后的排序,而它后移以后,比他大的肯定都要至少后移一次才能排在它的后面。

    所以它和比他大的数字都需要至少移动一次,计数,删除这些数。重复此过程直到不需要排序(剩余的数字都是有序的或者剩余数字数量小于2)为止。

    import sun.reflect.generics.tree.Tree;
    
    import java.util.*;
    
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
    
            int num = sc.nextInt();
    
            ArrayList<Integer> al = new ArrayList();
            int[] counter = new int[1];
            counter[0] = 0;
    
            for (int i = 0; i < num; i++) {
                al.add(sc.nextInt());
            }
    
            TreeSet<Integer> ts = new TreeSet(al);
            ArrayList<Integer> orderAl = new ArrayList(ts);
    
            count(al, orderAl, counter);
    
            System.out.println(counter[0]);
    
        }
    
        public static void count(ArrayList<Integer> al, ArrayList<Integer> orderAl, int[] counter){
    
            boolean stop = true;
    
            for(int i = 0; i < al.size(); i++){
                if(al.get(i) != orderAl.get(i)){
                    int currentNum = al.get(i);
                    int jj = al.size();
                    for(int j = 0; j < jj; j++){
                        int removeNum = al.get(j);
                        if(removeNum >= currentNum){
                            al.remove(new Integer(removeNum));
                            orderAl.remove(new Integer(removeNum));
                            counter[0] = counter[0] + 1;
                            j--;
                            jj--;
                        }
                    }
                    stop = false;
                    break;
                }
            }
            if(stop != true && al.size() > 1) {
                count(al, orderAl, counter);
            }
        }
    
    
    
    }
  • 相关阅读:
    备份
    Ibatis_dataMapper
    查询成绩都大于80分的学生
    删除文件的工具
    从运行中启动收索引擎
    数据库Northwind
    搭建Android开发环境
    数据库知识结构
    数据库MedicineMis_STD
    数据库work
  • 原文地址:https://www.cnblogs.com/clamp7724/p/12251124.html
Copyright © 2011-2022 走看看