首页 > 试题广场 >

排序

[编程题]排序
  • 热度指数:9211 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
牛牛有一个长度为n的整数序列,牛牛想对这个序列进行重排为一个非严格升序序列。牛牛比较懒惰,他想移动尽量少的数就完成重排,请你帮他计算一下他最少需要移动多少个序列中的元素。(当一个元素不在它原来所在的位置,这个元素就是被移动了的)

输入描述:
输入包括两行,第一行一个整数n(1 ≤ n ≤ 50),即序列的长度
第二行n个整数x[i](1 ≤ x[i] ≤ 100),即序列中的每个数


输出描述:
输出一个整数,即最少需要移动的元素个数
示例1

输入

3
3 2 1

输出

2
头像 白伟仝
发表于 2020-07-26 15:59:55
排序前后的各相应位置上的值,挨着比较即可,每有一个不同的,答案就加一: import java.util.*; public class Main{ public static void main(String[] args) { Scanner sc = new Scann 展开全文
头像 牛客题解官
发表于 2020-06-05 18:28:05
排序 题目难度:简单 知识点:数学逻辑,数组 解题思路:将数组按照从小到大的顺序排序,新旧数组中数值不相同的的总位置数即为题中需要移动的个元素的个数。 方法一 首先创建一个新的数组,使用不断循环的方式将旧数组中的值赋给新的数组,完成数组的复制。然后对新数组进行排序,最后对比两个数组在同一位置处的数值 展开全文