首页 > 编程语言 >24数媒Java上机2

24数媒Java上机2

时间:2024-04-26 12:33:26浏览次数:25  
标签:24 数媒 right Java Scanner int numbs public left

对于一个包含N个非负整数的数组A[0..n-1],如果有0<=i < j<n,且A[ i ]>A[ j ],则称(A[ i] ,A[ j] )为数组A中的一个逆序对。

现给定一组数,请你算出这组数中共有多少组逆序对。

输入格式:

共两行,第一行是一个整数N(N≤1000),表示这组数的个数。第二行有N个整数,用空格分隔,为这组数。测试用例保证合法且所有数均可以用int存储。

输出格式:

只有一行,为一个整数,代表这组数中逆序对的数量。

输入样例:

5

3 1 4 5 2

输出样例:

4

分析:

1、朴素解法:

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         Scanner sc = new Scanner(System.in);
 6         int n = sc.nextInt();  
 7         int[] array = new int[n];
 8         for (int i = 0; i < n; i++) {
 9             array[i] = sc.nextInt();
10         }
11 
12         int count = 0; 
13 
14         for (int i = 0; i < n; i++) {
15             for (int j = i + 1; j < n; j++) {
16                 if (array[i] > array[j]) {
17                     count++;
18                 }
19             }
20         }
21 
22         System.out.println(count);
23 
24         sc.close();
25     }
26 }

时间复杂度O(n2)

2、归并排序

 1 import java.util.Scanner;
 2 
 3 public class nixu {
 4     public static void main(String[] args) {
 5         Scanner scanner = new Scanner(System.in);
 6         int n = scanner.nextInt();
 7         int[] numbs = new int[n];
 8         for (int i = 0; i < n; i++) {
 9             numbs[i] = scanner.nextInt();
10         }
11         System.out.println(countInversions(numbs));
12     }
13 
14     public static int countInversions(int[] numbs) {
15         return mergeSort(numbs, 0, numbs.length - 1);
16     }
17 
18     private static int mergeSort(int[] nums, int left, int right) {
19         if (left >= right) return 0;
20         int mid = left + (right - left) / 2;
21         int count = mergeSort(nums, left, mid) + mergeSort(nums, mid + 1, right);
22         int[] temp = new int[right - left + 1];
23         int i = left, j = mid + 1, k = 0;
24         while (i <= mid && j <= right) {
25             if (nums[i] <= nums[j]) {
26                 temp[k++] = nums[i++];
27             } else {
28                 temp[k++] = nums[j++];
29                 count += mid - i + 1;
30             }
31         }
32         while (i <= mid) temp[k++] = nums[i++];
33         while (j <= right) temp[k++] = nums[j++];
34         System.arraycopy(temp, 0, nums, left, temp.length);
35         return count;
36     }
37 }

时间复杂度O(nlogn)

标签:24,数媒,right,Java,Scanner,int,numbs,public,left
From: https://www.cnblogs.com/zxc5612301/p/18154217

相关文章

  • Java面试题:SimpleDateFormat是线程安全的吗?使用时应该注意什么?
    在日常开发中,我们经常会用到时间,我们有很多办法在Java代码中获取时间。但是不同的方法获取到的时间的格式都不尽相同,这时候就需要一种格式化工具,把时间显示成我们需要的格式。最常用的方法就是使用SimpleDateFormat类。这是一个看上去功能比较简单的类,但是,一旦使用不当也有可能导......
  • JavaScript---FileReader、Blob、File对象
    ArrayBuffer对象,Blob对象ArrayBuffer对象ArrayBuffer对象表示一段二进制数据,用来模拟内存里面的数据。通过这个对象,JavaScript可以读写二进制数据。这个对象可以看作内存数据的表达。这个对象是ES6才写入标准的,普通的网页编程用不到它,为了教程体系的完整,下面只提供一......
  • 精选 | Google Cloud Next'24 拉斯维加斯会议 BigQuery 连续查询报告
    本篇由CloudAce数据解决方案部高级工程师撰写。 我听说了拉斯维加斯GoogleCloudNext'24举办的“使用BigQuery连续查询构建连续数据和AI管道”(“BuildcontinuousdataandAIpipelineswithBigQuerycontinuousqueries”)会议,我想对此进行报道。 本次会议......
  • Ubuntu 24.04 LTS (Noble Numbat) 正式版发布
    Ubuntu24.04LTS(NobleNumbat)正式版发布Canonical的第10个长期支持版本在性能工程、企业安全和开发人员体验方面树立了新标准请访问原文链接:Ubuntu24.04LTS(NobleNumbat)正式版发布,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org无耻抄袭者YuTao请......
  • Ubuntu 24.04 LTS x86_64 OVF (sysin) - VMware 虚拟机模板
    Ubuntu24.04LTSx86_64OVF(sysin)-VMware虚拟机模板Ubuntu24.04LTS(GNU/Linux6.8-genericx86_64)请访问原文链接:Ubuntu24.04LTSx86_64OVF(sysin)-VMware虚拟机模板,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org无耻抄袭者YuTao请远离本站!!!......
  • 支付宝JavaScript跳转领取红包
    代码如下<!DOCTYPEhtml><html><head> <title>赚钱红包</title> <metacharset="utf-8"> <metaname="wechat-enable-text-zoom-em"content="true"> <metahttp-equiv="Content-Type"......
  • 【2024-04-25】发展改变
    20:00已知有涯,而未知无涯,我们如同立于荒岛之上,被苍茫大海所困。每一代人的任务,都是填出一小块新的陆地。                                                 ——T.H.赫胥......
  • 不只有 Spring,这四款 Java 基础开发框架同样值得关注! 审核中
    Java开发不只有Spring,今天给大家推荐几个同样优秀的Java基础开发框架,为日常项目开发提供更多的选择。答应我,请不要再叫我Spring小子了,​好吗?项目概览:Guice:轻量级依赖注入框架Javalin:轻量级Java和KotlinWeb框架Quarkus:云原生时代高性能Java框架Vert.x:构建响应......
  • 2024年vue 开发环境 Node.js于win10环境下的安装
    2024年vue开发环境Node.js于win10环境下的安装导航2024年vue开发环境Node.js于win10环境下的安装导航一、下载node.js二、安装node.js三、测试(一)四、环境配置五、测试(二)六、安装淘宝镜像七、安装vue脚手架一、下载node.jsNode.js官方网站下载:https://nodejs.org/en......
  • 20240425打卡
    第九周第一天第二天第三天第四天第五天第六天第七天所花时间9h4h1h0h代码量(行)7271101980博客量(篇)1111知识点了解完成了地铁查询系统的App优化了地铁查询代码并通过验收python题目练习无......