笔试题算法系列(八)百度有趣的排序

摘要:
【编程问题】有趣的排序时间限制:1秒空间限制:32768K度熊有N个数字的数组。他想将数组从小到大进行排序,但可爱的度熊只做以下操作:取数组中的任何数字,并将其放在数组的最后一个位置。阵列可以从小到大排序多少个操作?
[编程题] 有趣的排序

时间限制:1秒

空间限制:32768K

度度熊有一个N个数的数组,他想将数组从小到大 排好序,但是萌萌的度度熊只会下面这个操作:
任取数组中的一个数然后将它放置在数组的最后一个位置。
问最少操作多少次可以使得数组从小到大有序?
输入描述:
首先输入一个正整数N,接下来的一行输入N个整数。(N <= 50, 每个数的绝对值小于等于1000)
输出描述:
输出一个整数表示最少的操作次数。
输入例子1:
4
19 7 8 25
输出例子1:
2

代码如下:
 1 import java.lang.Math;
 2 import java.util.Arrays;
 3 import java.util.HashMap;
 4 import java.util.Scanner;
 5 
 6 public class Main{
 7     public static void main(String[] args){
 8         Scanner sc = new Scanner(System.in);
 9         String[] line;
10         while(sc.hasNext()){
11             line = sc.nextLine().split(" ");
12             int n = Integer.parseInt(line[0]);
13              line = sc.nextLine().split(" ");
14             int[] data = new int[n];
15             int min = Integer.MIN_VALUE;
16             int minIndex = 0;
17             for(int i=0; i<n; i++){
18                 data[i]= Integer.parseInt(line[i]);
19                 min = Math.min(min,data[i]);
20                 minIndex = i;
21             }
22             HashMap dataIndex = new HashMap();
23             for(int i=0; i<n; i++){
24                  dataIndex.put(data[i],i);
25             }
26             Arrays.sort(data);
27             int maxIndex = n;
28             int count = 0;
29             for(int i=0; i<n-1; i++){
30                if((int)dataIndex.get(data[i])>(int)dataIndex.get(data[i+1])){
31                   count++;
32                   dataIndex.put(data[i+1],maxIndex++);
33                }
34             }
35             System.out.println(count);
36         }
37         sc.close();
38     }
39 }

免责声明:文章转载自《笔试题算法系列(八)百度有趣的排序》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Spring Boot + Spring Cloud 实现权限管理系统 配置中心(Config、Bus)CentOS7安装Nginx及其相关下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C# params 用法简介

params 是C#的关键字, params主要是在声明方法时参数类型或者个数不确定时使用,关于params 参数数组,需掌握以下几点:   一.参数数组必须是一维数组  二.不允许将params修饰符与ref和out修饰符组合起来使用   三.与参数数组对应的实参可以是同一类型的数组名,也可以是任意多个与该数组的元素属于同一类型的变量  四.若实参是数组...

web API请求与参数获取

总结webAPI的常用请求方法与后台参数的获取: 一:get请求:(会将所以参数拼接到URL里面) 1:基础类型:string a=“hello” , 前端无论你是写到ajax里面的data属性还是直接拼接到URL里面,后台直接string a获取; [HttpGet] public JObject AddUserInfo(string a) {........

原创:python的requests.post()向后端传递数据,数组结构需将python数据结果转换成JSON

 针对采集来的数据,用requests.post()向后端传递 如果是python数据结构如数组,需要转换成为JSON对象,否则后端容易解析不成后端集合的对象结构 re 一:python做为前端请求requests.post() ''' 后台接收是数组 ''' dataInfoList = [...

python+mitmproxy抓包过滤+redis消息订阅+websocket实时消息发送,日志实时输出到web界面

本实例实现需求 在游戏SDK测试中,经常需要测试游戏中SDK的埋点日志是否接入正确。本实例通过抓包(客户端http/https 请求)来判定埋点日志是是否接入正确。 实现细节:使用django项目,后端采用python mitmdump 扩展脚本“log_handler.py”实时抓取与过滤4399SDK 客户端日志,将数据处理成约定需要的格式,保存和发布...

排序算法时间复杂度的下界

《算法导论》中有一节讲的是“(比较)排序算法时间的下界”,本文将论述同一个问题,思路略有差异。本文将从信息熵的角度论述排序算法时间复杂度的下界。若本文论述过程中有错误或是不足,还请各位指正。 1. 问题归约     排序,涉及到被排序的序列和排序的方法。(比较)排序算法时间的下界对被排序的序列和排序方法做了以下限制 没有关于被排序序列的先验信息,譬如序列...

laraver ajax分页

1,设置分页容器参考laraver手册 我的设置代码如下://设置分页容器  /app/models/ZurbPresenter.php<?php     class ZurbPresenter extends IlluminatePaginationPresenter {    public function getPageLinkWrapper...