当前位置: 首页> 财经> 股票 > 电商seo名词解释_全国今日新增疫情报告_东莞seo关键词_自动友链网

电商seo名词解释_全国今日新增疫情报告_东莞seo关键词_自动友链网

时间:2025/7/9 16:01:48来源:https://blog.csdn.net/2301_80208990/article/details/146608584 浏览次数:1次
电商seo名词解释_全国今日新增疫情报告_东莞seo关键词_自动友链网

问题描述

小蓝老师教的编程课有 NN 名学生, 编号依次是 1…N1…N 。第 ii 号学生这学期 刷题的数量是 AiAi​ 。

对于每一名学生, 请你计算他至少还要再刷多少道题, 才能使得全班刷题 比他多的学生数不超过刷题比他少的学生数。

输入格式

第一行包含一个正整数 NN 。

第二行包含 NN 个整数: A1,A2,A3,…,ANA1​,A2​,A3​,…,AN​.

输出格式

输出 NN 个整数, 依次表示第 1…N1…N 号学生分别至少还要再刷多少道题。

样例输入

5
12 10 15 20 6

样例输出

0 3 0 0 7

1.主要目的:找寻排序过后的刷题中间数

具体思路如下:

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);//利用数组下标表示学生 值表示刷题数//对数组进行排序 寻找刷题中间数//输出中间刷题数减去已刷题数量int n=scan.nextInt();int [] arry=new int[n];int temp=0;for(int i=0;i<n;i++){arry[i]=scan.nextInt();}int []arry2=new int[n];for(int j=0;j<n;j++){arry2[j]=arry[j];//复制原数据}//冒泡排序for (int i = 0; i < n - 1; i++) {  // 控制遍历次数for (int j = 0; j < n - 1 - i; j++) {  // 内部比较和交换if (arry[j] > arry[j + 1]) {  // 相邻元素比较temp = arry[j];arry[j] = arry[j + 1];arry[j + 1] = temp;  // 交换元素}}}//  Arrays.sort(arry);可以直接利用该方法实现快速排序int num=0;num=arry[(n/2)];//查询中间值for(int i=0;i<n;i++){System.out.print(Math.max(0, median - arry2[i])+" ");//比较大小 使得所有负数都为0}scan.close();}}

注意点:

1.判断学生奇数偶数的影响;

在查找该题中排序后中间值的成绩要仔细分析其下标位置

如果是偶数个如:1 2 3 4 5 6  根据题目要求(刷题比他多的学生数<=刷题比他少的学生数)

则我们需要寻找到中间值4  当小于4的数刷到4个题时,恰好(刷题比他多的学生数=刷题比他少的学生数)符合要求 则目标下标6/2==3为n/2;

 

如果是奇数个如:1 2 3 4 5 6 7 根据题目要求(刷题比他多的学生数<=刷题比他少的学生数)

则我们需要寻找到中间值4  当小于4的数刷到4个题时,恰好(刷题比他多的学生数=刷题比他少的学生数)符合要求 则目标下标7/2==3依然为n/2;

经过分析 奇偶数没有影响

2.

 java中Arrays.sort(arry);可以实现快速排序

关键字:电商seo名词解释_全国今日新增疫情报告_东莞seo关键词_自动友链网

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: