-
如何在JAVA中随机打乱输出一组数字而不重复要求用户输入两个不同的数字,然后JAVA随即打乱输出包含在这两个...
2021-01-14 10:27:40如何在JAVA中随机打乱输出一组数字而不重复要求用户输入两个不同的数字,然后JAVA随即打乱输出包含在这两个数之间的所有整数,然后计算最大和第二大的数字中间夹着的数字和.例子:Enter a number:6Enter a number:-35,4...如何在JAVA中随机打乱输出一组数字而不重复
要求用户输入两个不同的数字,然后JAVA随即打乱输出包含在这两个数之间的所有整数,然后计算最大和第二大的数字中间夹着的数字和.例子:
Enter a number:6
Enter a number:-3
5,4,0,-2,1,-3,6,-1,3,2
Largest pair sum:9
输入数字的一部分我已经完成,剩下的部分实在有点不会.求各位大大指教!
附上已完成的部分= =
import java.io.*;
import java.util.Random;
public class A6{
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
boolean same = false;
int num1 = 0;
int num2 = 0;
while same) {//if the numbers which user enter are the same,do it again
try {
System.out.print("enter a number:");//ask user a number
num1 = Integer.parseInt(in.readLine());
System.out.print("enter another number:");//ask user another number
num2 = Integer.parseInt(in.readLine());
if (num1 = num2) {
same = true;//if the number are different,continue the next part and don't need to enter again
} else {
System.out.println("two numbers is same.");//if not ,ask user enter again
}
} catch (NumberFormatException nfc) {//text the enter is a number or not,if not,ask user enter again
System.out.println("not a number");//show user the reason why get false
}
}
最后一个要求错了.应该是找出相加结果最大的相邻的两个数字,然后把结果打印出来
作业帮用户2016-12-01举报
-
SQL 如何计算每个分组的中位数
2020-07-07 11:48:30如果是偶数,则是中间位置那两个数的平均值。 怎么查询出数据分组以后每个组的中位数呢? 用SQL来解决这个问题是很有难度的! SQL的集合是无序的,没有数据位置的概念,需要人为地造出行号,但是要对各分组独立编...中位数是指一组数据排序以后,位于中间位置的数据值。如果数据个数是奇数,中位数就是最中间位置那个值;如果是偶数,则是中间位置那两个数的平均值。
怎么查询出数据分组以后每个组的中位数呢?
用SQL来解决这个问题是很有难度的!
SQL的集合是无序的,没有数据位置的概念,需要人为地造出行号,但是要对各分组独立编行号也困难。后来在SQL2003标准中加入了窗口函数,可以对分组编行号了,但是求各组中位数依然繁琐。
举个例子:现有成绩表SCORES数据如下,要求查出每科成绩的中位数。
COURSE SCORE History 68.5 History 79.0 History 82.5 History 88.0 History 93.5 Maths 75.5 Maths 83.0 Maths 85.0 Maths 95.5 查询出来的各科成绩中位数应该是:
COURSE SCORE History 82.5 Maths 84.0 以Oracle为例,用SQL写出来是这样:
WITH A AS
( SELECT COURSE, SCORE,
ROW_NUMBER()OVER ( PARTITION BY COURSE ORDER BY SCORE) AS RN,
COUNT(*) OVER (PARTITION BY COURSE) AS CNT
FROM SCORES ),
B AS
(SELECT * FROM A WHERE RN>(CNT-0.5)/2 AND RN<(CNT+2.5)/2 )
SELECT COURSE, AVG(SCORE) AS SCORE FROM B
GROUP BY COURSE
ORDER BY COURSE;
这里的A为每组数据加上组内行号并统计每组记录数,B查出位于每组中间位置的记录,最后从B里算出每组平均值,即为中位数。解题步骤比较多,这种SQL不好写。另外还有不用窗口函数的办法,语句就更加复杂了,这里不再列出。
集算器的SPL语言支持组内运算,也提供了中位数函数,解决这个问题就会简单很多,只需1行代码:
connect("mydb").query("select * from scores order by course, score").group(COURSE).new(~.COURSE,~.(SCORE).median():SCORE)
SPL 擅长解决这类分组子集和组内有序计算,请阅计算各组前 N 行、组内运算、行间计算
集算器 SPL 是解决 SQL 难题的专业脚本语言,它语法简单,符合自然思维,是天然分步、层次清晰的面向过程计算语言。它采用与数据库无关的统一语法,编写的算法可在数据库间无缝迁移。它是桌面级计算工具,即装即用,配置简单,调试功能完善,可设置断点、单步执行,每步执行结果都可查看。请参阅SQL 解题手
SPL也能很方便地嵌入到JAVA应用,可参考Java 如何调用 SPL 脚本。
具体使用方法可参考 如何使用集算器。
-
关于如何交换两个数
2019-05-14 23:54:242.不允许创建临时变量,交换两个数的内容 1.给定两个整形变量的值,将两个值的内容进行交换。 思路:在计算机中并不像人脑能够直接将两变量内容直接交换,但是我们可以临时定义一个中间变量,借助中间变量实现两个...1.给定两个整形变量的值,将两个值的内容进行交换。
思路:在计算机中并不像人脑能够直接将两变量内容直接交换,但是我们可以临时定义一个中间变量,借助中间变量实现两个变量内容的交换。
//An highlighted blockvar foo = 'bar'; #include<stdio.h> int main() { int i=62, j=24, t=0; printf("%d %d\n", i, j); t = j; j = i; i = t; printf("After change :%d %d\n", i, j); system("pause"); return 0; }
2.不允许创建临时变量,交换两个数的内容
一、思路:可以利用数学的特性交换,两数相加的总数减去其中一个数就是另一个数。
//An highlighted blocked foo = 'bar'; #include<stdio.h> int main() { int i = 62, j = 24; printf("%d %d\n", i, j); i = i+j; j = i-j; i = i-j; printf("After change :%d %d\n", i, j); system("pause"); return 0; }
弊端:加减中,如果数字的太大,这样会造成溢出的状况,即a和b的取值是局限的。
二、思路切换:根据二进制的特性,把i ^ j的值赋给i,这样j=i ^ j中就相当于原来的i ^ j ^ j,这样i的值就赋给了j;
同样的道理,在下一步中i=i ^ j就相当于原来的i ^ j ^ i,这样j的值就赋给了i;这样也能达到数值的交换,并且没有过多的局限性。//An highlighted blocked foo = 'bar'; #include<stdio.h> int main() { int i = 62, j = 24; printf("%d %d\n", i, j); i = i^j; j = i^j; i = i^j; printf("After change :%d %d\n", i, j); system("pause"); return 0; }
但是在实际编程中,还是使用中间变量来得更加方便快捷。
3. 将数组A中的内容和数组B中的内容进行交换。(数组一样大)
思路:建立两个数组a、b,并对数组内进行赋值,使用循环对数组内的值遍历,将a、b两个值通过前述1.进行交换。这很简单!
那么是否能提高一下难度,对后面这个功能建立函数进行调用呢?
首先看一段代码://An highlighted blockvar foo = 'bar'; #include void Swap1(int x, int y) { int tmp = 0; tmp = x; x = y; y = tmp; } void Swap2(int *px, int *py) { int tmp = 0; tmp = *px; *px = *py; *py = tmp; } int main() { int num1 = 1; int num2 = 2; Swap1(num1, num2); printf("Swap1::num1 = %d num2 = %d\n", num1, num2); Swap2(&num1, &num2); printf("Swap2::num1 = %d num2 = %d\n", num1, num2); return 0; }
显然直接传值进行交换是不行的。需要借助指针,传址传参这样就可以交换数组的值了。//An highlighted blockvar foo = 'bar'; #pragma warning(disable:4996) #include<stdio.h> int exch(int *arr1[10], int *arr2[10]) { int j; int t; for (j = 0; j < 10; j++) { t = arr1[j]; arr1[j] = arr2[j]; arr2[j] = t; } } int main() { int a[10], b[10]; int i; printf("please input a:\n"); for (i = 0; i < 10; i++){ scanf("%d", &a[i]); } printf("please input b:\n"); for (i = 0; i < 10; i++) { scanf("%d", &b[i]); } exch(&a, &b); printf("after exchange a:"); for (i = 0; i < 10; i++) { printf("%d\t", a[i]); } printf("\nafter exchange b:"); for (i = 0; i < 10; i++) { printf("%d\t", b[i]); } system("pause"); return 0; }
-
mysql 中位数算法_如何使用简单的SQL查询在MySQL中计算中位数
2021-03-03 19:41:40如果数组有偶数个元素,中位数就是最中间的两个数值的平均数。中位数对于了解“我的值是否位于中间?”非常有用。比如,我在学校的最后一次考试中得了 D (或 80),那么我的在全班同学中的排名是否在前 50%?举一个具体...什么是中位数?
数值型数组的中位数是在数据排序后位于数组中间项的值。如果数组有偶数个元素,中位数就是最中间的两个数值的平均数。
中位数对于了解“我的值是否位于中间?”非常有用。比如,我在学校的最后一次考试中得了 D (或 80),那么我的在全班同学中的排名是否在前 50%?
举一个具体的例子,我们看看从学校的这些测试分数中找到中位数的过程:[55, 80, 95, 100, 99, 70, 60]。
首先,对数组排序:[55, 80, 95, 100, 99, 70, 60] ===> [55, 60, 70, 80, 95, 99, 100].
这个数组包含 7 个元素,不是偶数,所以中位数是 (7 / 2 + 1),即第 4 项的值 => 80。
在 MySQL 中计算某列数据的中位数
很不幸,MySQL 并未内置计算列数据中位数的函数。因此,我们需要自己创建查询。
假如我们想从“grades”列中查找中位数。来看看我们要创建的查询是什么算法:
对“grades”排序并为排序后的每一行附加序号(行号)
如果总行数是奇数,找到位于有序列表中间位置的值。
如果总行数是偶数,找到位于有序列表中间两个位置的值。
计算上面第 (3) 步和第 (4) 取得值的平均值。
返回这个平均值,它就是中位数。
那么这样的查询该怎么写?
SET@rownum := -1;
SELECT
AVG(g.grade)
FROM
(SELECT@rowindex:=@rowindex + 1ASrowindex,
grades.grade ASgrade
FROMgrades
ORDERBYgrades.grade)ASg
WHERE
t.rowindex IN(FLOOR(@rowindex / 2) , CEIL(@rowindex / 2));
解释一下:
先从内部的一个子查询开始 —— 为 @rowindex 赋值的子查询会为每个成绩赋予一个自增后的序号,并对 grades 排序 [译者注:按逻辑和代码是先排序再赋予序号]。
有了排好序的成绩列表之后,外层查询会获取位中间位置的值。如果数组元素是奇数个,两个值都是取的位于正中那个值。
然后,外层查询的 SELECT 子句返回上述两个值的平均值作为中位数。
你看,这并不是简单的运行 MEDIAN(column_name),但它可行。我们期待 MySQL 会决定将这一功能添加到内置产品中,这将简化获取中位数的查询。
-
mysql中位数函数_如何使用简单的SQL查询在MySQL中计算中位数
2021-01-19 00:53:54如果数组有偶数个元素,中位数就是最中间的两个数值的平均数。中位数对于了解“我的值是否位于中间?”非常有用。比如,我在学校的最后一次考试中得了 D (或 80),那么我的在全班同学中的排名是否在前 50%?举一个具体... -
mysql排序取中位数_如何使用简单的SQL查询在MySQL中计算中位数
2021-02-10 12:28:59如果数组有偶数个元素,中位数就是最中间的两个数值的平均数。中位数对于了解“我的值是否位于中间?”非常有用。比如,我在学校的最后一次考试中得了 D (或 80),那么我的在全班同学中的排名是否在前 50%?举一个具体... -
如何使用简单的 SQL 查询在 MySQL 中计算中位数
2017-09-29 09:26:20如果数组有偶数个元素,中位数就是最中间的两个数值的平均数。 中位数对于了解“我的值是否位于中间?”非常有用。比如,我在学校的最后一次考试中得了 D (或 80),那么我的在全班同学中的排名是否在前 50%? ... -
如何得到一个数据流中的中位数
2019-06-26 21:18:13如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 分析 找中位数,区分了数组长度为奇数偶数... -
R语言中两个数组(或向量)的外积如何计算
2015-07-13 01:06:35所谓数组(或向量)a和b的外积,指的是a的每一个元素和b的每一个元素搭配在一起相乘得到的新元素.当然运算规则也可自定义.外积预算符为 %o%(注意:百分号中间的字母是小写的o).例如:> a > b > d > d [,1] [,2] [,3] ... -
【计算机笔记】Java 数据流中的中位数
2019-12-16 21:41:06如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 解题思路 /* 大顶堆,存储左半边元素 */ private PriorityQueue<Integer> left = new PriorityQueue<... -
数字逻辑对偶式_逻辑电路如何计算?三种基本逻辑运算比较
2021-01-05 13:26:38关注我们遇见更好的攻城狮自己!...逻辑变量与普通代数一样,也可以用字母、符号、数字及其组合来表示,但它们之间有着本质区别,因为逻辑变量的取值只有两个,即0和1,而没有中间值。 2.逻辑运算:在逻辑代... -
找出1-100中缺失的两个数
2014-03-25 20:50:22问如何找出丢失的那两个数?附带条件不能开辟额外的空间。 解题思路:常见的两种解法有:1.计算a+b和a*b的值,然后在解方程求解(但是这样会使得中间某个变量过大)。2.使用bit位来标记。占用13个字节。第二种方法使用... -
oracle 取中间间隔的数_2.4.10间隔分析
2020-12-11 09:12:421. 视频版讲解间隔分析讲解视频在 1.11 及之后...通过计算用户行为序列中两个事件的时间间隔,得到业务转化环节的转化时长分布。间隔分析可以帮助你回答以下问题:包含了实名认证等复杂操作的注册流程,想知道用户从... -
oracle如何判断奇数偶数_SQL复习笔记 —— 如何求中位数?
2021-01-04 07:06:43SQL数据库提供了多种聚合函数,譬如平均值、标准差等等,但是没有提供计算中位数的函数,因此需要自己编写查询语句取得中位数。...如果序列的长度为偶数,我们这里规定中位数为最中间的两个数(如长度为6的... -
java 打乱 数字_如何在JAVA中随机打乱输出一组数字而不重复
2021-01-14 10:27:11问题是要求用户输入两个不同的数字,然后JAVA随即打乱输出包含在这两个数之间的所有整数,然后计算最大和第二大的数字中间夹着的数字和。例子:Enteranumber:6Enteranumber:-35,4,0,-2...问题是 要求用户输入两个不同... -
如何计算IP地址
2015-07-02 09:40:22IP地址是一个32位的二进制数,它由网络ID和主机ID两部份组成,用来在网络中唯一的标识的一台计算机。网络ID用来标识计算机所处的网段;主机ID用来标识计算机在网段中的位置。IP地址通常用4组3位十进制数表示,中间用... -
如何快速找到package里的main_没有SortedList,如何快速找到中间值
2020-11-29 19:26:49做了这么多道题,我们发现总是需要某种数据结构辅助我们解决一些问题,算法跟数据结构总是不分家。...这个类要包含下面两个方法:insertNum(int num)数字流中新增一个数字。findMedian()返回当前被增加的数字们... -
sql server cast函数_SQL复习笔记 —— 如何求中位数?
2020-11-22 08:52:13SQL数据库提供了多种聚合函数,譬如平均值、标准差等等,但是没有提供计算中位数的函数,因此需要自己编写查询语句取得中位数。...如果序列的长度为偶数,我们这里规定中位数为最中间的两个数(如长度为6的... -
剑指Offer对答如流系列 - 数据流中的中位数
2020-01-29 21:39:31文章目录面试题41:数据...如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 所谓数据流,就是不会一次性读入所有数据,只能一个一个读取,每一步都要求能计算中位数。 二、问题... -
如何计算IP地址及CIDR
2014-07-02 14:28:00IP地址是一个32位的二进制数,它由网络ID和主机ID两部份组成,用来在网络中唯一的标识的一台计算机。网络ID用来标识计算机所处的网段;主 机ID用来标识计算机在网段中的位置。IP地址通常用4组3位十进制数表示,中间... -
如何计算IP地址及CIDR(收藏)
2013-07-31 09:03:00IP地址是一个32位的二进制数,它由网络ID和主机ID两部份组成,用来在网络中唯一的标识的一台计算机。网络ID用来标识计算机所处的网段;主 机ID用来标识计算机在网段中的位置。IP地址通常用4组3位十进制数表示,... -
剑指offer—数据流中的中位数
2015-10-12 23:54:41华电北风吹 ...如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。解析:利用插入排序的思想,将进流中的数据排序。寻找中位数。class Solution { public: vect -
数据流中的中位数python_刷题记录(python)05-数据流中的中位数
2020-12-18 16:51:40如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。解题思路:接收数据,对数据进行排序,判断... -
数据流中的中位数
2020-06-11 17:10:00如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 优先队列 利用两个堆,一个大根堆一个小根堆...