比较两个数组中的数据是否相同

比如有两个数组:
int[] a = new int[] {1,2,3};
int[] b = new int[] {3,1,2};

只需要判断两数组中的数据是否相同,不用比较顺序

13个回答

简单写了个小demo求给个积分谢谢了。

int[] a = new int[] {1,2,3};
int[] b = new int[] {3,1,2};
int c=0;
for(int i=0;i<a.length;i++){
for(int j=0;j<b.length;j++){
if(a[i]==b[j]){
c++;
}
}
}
if(c==a.length&&c==b.length){
System.out.println("两数组数字相同");
}else if(c==0){
System.out.println("两数组数字完全不同");
}else{
System.out.println("两数组数字相同个数有:"+c+"个");
}

m0_37746602
m0_37746602 谢谢,试了试可以
大约 2 年之前 回复

import java.util.Arrays;
public class Ces {

public static void main(String[] args) {
    int[] a = new int[] {1,2,3};
    int[] b = new int[] {3,1,2};
    Arrays.sort(a);//对数组进行排序
    Arrays.sort(b);
    int j=0;
    for(int i=0;i<a.length;i++)
    {
        if(a[i]!=b[i])
        {
            j=1;
            break;
        }
    }
    if(j==0)
        System.out.println("两个数组相等");
    else
        System.out.println("两个数组不相等");
}

}

Dai___Dai
10-24 回复liuxiang0914: 谢谢♪(・ω・)ノ
大约 2 年之前 回复
biezheyang_123
biezheyang_123 循环遍历,然后比较
大约 2 年之前 回复
liuxiang0914
执笔洒脱一世、 6666
大约 2 年之前 回复

楼上的方法都可以,还有也可以用循环直接比

可以丢到list再比较

先对2个数组进行排序,从小到大排序。

再按顺序比较每个是否相等。

先自己定义排序的 比较 相同就可以了

用一个Hash表来存数组A中的数据,键和值均为A中元素,再用B中的元素提取Hash表中的值,判断是否都相等。

1.首先看看数组的多大的,如果两个数组放的数不一样多,那就直接不行;
2.然后给他俩都排个序,一套循环在判断一下就OK

先判断length,如过不一样,直接返回不等,
然后利用arrays.sort(int[]);排序,
然后for循环

//把这个方法放到自己的工具类,实例化使用放入两个数据就行,通过返回的Boolean值判断是否相等
public boolean compare(int[] s,int[] e) {
if(s.length!=e.length){
return false;
}
Arrays.sort(s);
Arrays.sort(e);
for (int i = 0; i < e.length; i++) {
if(s[i]!=e[i]) {
return false;
}
}
return true;
}

//建议将自己要比较的数组转化为对象类型,这样基本上其他类型也可以用这个方法,而不是单一的数组使用
Integer[] s = {1,2};
Integer[] e = {2,1};
boolean f = compares(s, e);
//通过f来判断是否相等
public static boolean compares(Object[] s,Object[] e) {
if(s.length!=e.length){
return false;
}
Arrays.sort(s);
Arrays.sort(e);
for (int i = 0; i < e.length; i++) {
if(!s[i].equals(e[i])) { //
return false;
}
}
return true;
}

用双重循环,第一重循环第一个数组中的数字,第二重循环第二个数组中的数字,将第一个数组中的数字与第二个数组中的数字挨个比较。若相等则输出true

共13条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
两组1000个元素的数组对比,怎样得到数组里面相同元素的个数?
1)若两组1000个元素的数组对比,怎样得到数组里面相同元素的个数? 2)一组1000个元素的数组A重新排列后有1000!种可能,讲这些1000!种可能的数组分别与另一组数组B对比,怎样得到相同元素最多的数组?
js把数组下标相同的数据放在一起
举个例子,就好比一年有12个月的数据,数据格式是[object{2016-01-01:"[]"},object{2016-02-01:"[]"},.....] 如果(又一个数组)又一年数据过来,格式相同只是月份数据不同,如何把两个数组按照下标相同合并成[object{2016-01-01:"[]",2016-01-01:"[]"},object{2016-02-01:"[]",2016-02-01:"[]"}......]
如何用keras对两组数据用相同的网络进行训练并且画在一个acc-loss图?
假如我有A,B两组数据,我想用两个的loss-acc图来对比得出哪组数据更好,所以如何将这两组数据同时进行训练并将结果画在一个acc-loss图?
[JAVA]两个数组取相同元素,能有单层循环的实现么?
m个元素和n个元素的两个数组(具体没要求,假定没排序,有重复),取其中的相同元素 最近看到个面试题,答案说可以用m+n次循环实现,求算法,最好用java实现。 [b]问题补充:[/b] 大部分java库函数实现都用了循环,包括List.contains,Map.containsKey,Map.get等等 排序性能也不高,还是没看到什么好的做法,:( m+n的说法是我书上看到的,看来这年头书也不可靠了 [b]问题补充:[/b] ============================= To RyanPoy: 谢谢回复先 :) 排序性能怎样,我暂时没测试。 想问下,map的实现没有循环么?Map.Entry.next这样做迭代不是循环么 还有,好多地方提到这题的哈希实现的时候都会说是用空间换时间,但是java里具体怎么实现所谓空间换时间的? 附HashMap的containsKey和get都用到的: for (Entry<K,V> e = table[indexFor(hash, table.length)]; e != null; e = e.next) { [b]问题补充:[/b] =============================== 自己测试了一下 首先,hash查找确实快,但是对于这题的情况来说,把array put到hash中要花很长时间,普遍情况下,最快的实现还是楼下RyanPoy的先sort在search,再次感谢。 附: m=n=1000时 Put array to hashtable use 4,508,120ns Search with Hashtable use 2,861,880ns, found 1 Search with Sort use 6,227,000ns, found 1 m=n=100000时 Put array to hashtable use 108,423,560ns Search with Hashtable use 30,892,680ns, found 4 Search with Sort use 59,157,680ns, found 4 数组是random生成的
如何将两个文本随机分为个体编号相同的两组
我有两个文件,一个是popdata1,一个是ped,里面的 popdta1文件的表头是 Progeny G Phen Polygene QTL TBV 1 539 1 -0.758716 0.028109 -0.504285 -0.476176 2 540 1 -0.166460 0.047796 -0.702893 -0.655097 ``` ``` ped文件的表头是 Progeny Sire Dam 1 539 6 77 2 540 6 347 3 541 6 308 4 542 6 316 现在,我想把两个文件随机分成两组,1/3的数据做验证,2/3的数据做训练,怎么可以保证两个文件分成的个体是一样的 ``` ```
pyhon3如何快速高效的对比一个列表内的数据是否都相同
假设有两个列表,每个列表中是元组的数据类型 list1=[tuple1,tuple2,tuple3......] list2=[tuple1,tuple2,tuple3......] 现在需要判断list1中每个tuple是否都相等,如果相等再去判断list1与list2是否相等(list1与list2元组个数相等) 请问有什么高效快捷的方法吗?
jmeter读取csv文件时,同一个文件不能被两个线程组读取
![图片说明](https://img-ask.csdn.net/upload/201708/29/1503979133_167118.png) 如图,我一个测试计划中建两个线程组,两个线程组需要用到相同的数据,我建一个csv文件供请求读取,两个线程组都使用CSV Data Set Config读取该文件,但是运行时发现只有第一个线程组能读取成功,第二个线程组读不到数据 禁用第一个线程组只运行第二个线程组时,可以读取成功,也就是不能两个线程组都读取 我开始以为是同时读取冲突了,但是我将第二个线程组设置延时,等第一个线程组运行完再读取也不行 请问各位大神,这怎么解决??
一个关于数据大小比较的业务需求不知道如何实现
问题描述: 1、现在随机生成1-10这10个数,不重复的。 例:5, 8,4, 6,3, 7, 1 , 9, 10 , 2 然后把他们按从左到右两两做为一组拆开,也就是五组数 分别是: 第一组:{5,8}, 5+8=13 第二组:{4,6}, 4+6=10 第三组:{3,7}, 3+7=10 第四组:{1,9}, 1+9= 10 第五组:{10,2} 10+2= 12 2、现在有业务需求:计算每组数据的两数之和, 并比较它们的大小,然后按两数之和大小进行排名。 补充:假如出现最后计算结果相等的情况, 例如: 现在就是第二、三、四组的最后计算结果相同, 那他们的排名规则是:取每组数中的最大数进行比较,哪组的最大数是最大的, 则该组在它们最后计算结果一样的情况下,它的排名最大。 例:第二、三、四组中; 第二组最大数为:6, 第三组最大数为:7, 第四组最大数为:9 那在它们三组最后计算结果相同的情况下, 它们的排序为: 第四组>第三组>第二组 那最后的排名结果是: 第一组>第五组>第四组>第三组>第二组 困难描述:如何用java代码实现这个功能, 新手码农求java老司机载一程,非常感谢! 我着实是不知道怎么弄。
如何最高效的对一批数据的中每条数据的某字段长度进行校验
之前的项目碰到一个对导入数据进行校验的需求,大概描述为下: > 通过excel导入一批学生数据,需要对其中每个学生的学号进行校验,将学号长度不符合(即万一出现学生学号少/多输了一位,输入不规范学号的情况此处不予考虑)的数据打回。 ### 前提: 1. 每一条数据都要进行校验 1. 每批数据的错误率较低 1. 每批学生的学号拥有一个固定的标准长度(事先并不知道) 有两个方向的想法。 - **通过求众数** ①一开始考虑的是遍历数组寻找长度的众数再进行一一比较,于是问题就转化成了如何最快的寻找众数。 但是后来跟亲友交流后又觉得在错误率不高且每批数据标准学号长度唯一的情况下没必要通过遍历所有数组寻找众数 ②就想通过随机取三四条数据再取其众数然后进行比较。 - **随机比较** 后来觉得其实没有求众数的必要 ③随机取两条数据,再将当前数据与这两条随机数据的学号长度进行比较,一旦出现不相等的情况就打回。 ============================================= 大概想到了以上三种方法,但是第一种当数据量大了后增加时间复杂度,后两种则是在数据量小的时候可能造成误判。 有在考虑是否应该根据数据量来决定调用哪种方法。 **想问一下这种需求在降低复杂度且不会出错的前提下应该怎么进行处理最好呢?**
从AB两组中选出相同的两个对象,比对分析(最好用java实现)
A组中有三条记录{1,2,3},{2,3},{1,4}, B组中有三条记录{1,3},{1,2,3},{1,4}, 现在要给出分析结果: ①A的记录{1,2,3}和B组的记录{1,2,3}是对应的 ②A的记录{1,4}和B组的记录{1,4}是对应的 ③A组的记录{2,3}没有对应项 ④B组的记录{1,3}没有对应项 如何实现这样的功能?这样每次导入A,B两组数据就能自动分析结果,求大神指教
Acm 一道数据结构的问题,求思路,不求代码。
假设我有两数组,分别有n1 n2个数据(每组数据都不相同)。我要两个数组中各取一个相加,有n1乘n2种结果,从小到大排,取前n个。(如果n1 n2 特别大怎么算),求大神教我。
绝对值排序,采用C语言实现,对于每个测试实例,输出排序后的结果,两个数之间用一个空格隔开
Problem Description 输入n(n<=100)个整数,按照绝对值从大到小排序后输出。题目保证对于每一个测试实例,所有的数的绝对值都不相等。 Input 输入数据有多组,每组占一行,每行的第一个数字为n,接着是n个整数,n=0表示输入数据的结束,不做处理。 Output 对于每个测试实例,输出排序后的结果,两个数之间用一个空格隔开。每个测试实例占一行。 Sample Input 3 3 -4 2 4 0 1 2 -3 0 Sample Output -4 3 2 -3 2 1 0
C语言猜数字 怎么做的
Problem Description 猜数字游戏是gameboy最喜欢的游戏之一。游戏的规则是这样的:计算机随机产生一个四位数,然后玩家猜这个四位数是什么。每猜一个数,计算机都会告诉玩家猜对几个数字,其中有几个数字在正确的位置上。 比如计算机随机产生的数字为1122。如果玩家猜1234,因为1,2这两个数字同时存在于这两个数中,而且1在这两个数中的位置是相同的,所以计算机会告诉玩家猜对了2个数字,其中一个在正确的位置。如果玩家猜1111,那么计算机会告诉他猜对2个数字,有2个在正确的位置。 现在给你一段gameboy与计算机的对话过程,你的任务是根据这段对话确定这个四位数是什么。 Input 输入数据有多组。每组的第一行为一个正整数N(1<=N<=100),表示在这段对话中共有N次问答。在接下来的N行中,每行三个整数A,B,C。gameboy猜这个四位数为A,然后计算机回答猜对了B个数字,其中C个在正确的位置上。当N=0时,输入数据结束。 Output 每组输入数据对应一行输出。如果根据这段对话能确定这个四位数,则输出这个四位数,若不能,则输出"Not sure"。 Sample Input 6 4815 2 1 5716 1 0 7842 1 0 4901 0 0 8585 3 3 8555 3 2 2 4815 0 0 2999 3 3 0 Sample Output 3585 Not sure
C++如何初始化创建一个新的一维数组B[],完全等同于原有数组A[]?
有两个个要求: 1. 在对一维数组B的数据进行处理时,不会改变到一维数组A及其内存; 2. 尽量不要使用循环,取int i =[0, A.size()]的方法会影响效率。 问题补充: 根据楼下的回答,我自己稍微试了一下,这种方法已知数组A长度的情况下是可以的,但是不能对于输入的任意长度的数组A进行复制。 ``` #include "pch.h" #include<iostream> #include<stdlib.h> #include<string> using namespace std; //定义length函数返回数组长度 template<class T> int length(T& arr) { //cout << sizeof(arr[0]) << endl; //cout << sizeof(arr) << endl; return sizeof(arr) / sizeof(arr[0]); } int main() { cout << "hello, world" << endl; int A[] = { 2,3,5,4,3,2,6,7 }; int B[8]; memcpy(B, A, length(A) * sizeof(int)); for (int i = 0; i < length(B); i++) { cout << B[i] << " "; } } ``` 如上述代码所示(已在VS2017中编译成功),但是数组B在创建的时候必须已知A的大小,且将数组长度以常量输入以创建B;有没有什么办法对于任意输入的数组A,创建一个与之相同的数组B呢?
OJ数据结构 Vector 谢谢大家
题目描述 你有一个基于动态分配数组的顺序表。表中的元素均为非负整数,且按照非递减的顺序排列,即对于任何相邻的前后两个元素,靠前的元素都小于等于靠后的元素。 动态分配数组的规则如下: 初始时,表中元素个数为 0,数组的容量为 2。 每当在表已满(元素个数等于数组容量)的情况下尝试插入新的元素,则将动态分配的数组容量扩容为原来的 2 倍。此次插入操作造成的表中已有元素移动的次数等于此操作发生之前表中元素的个数(也即扩容前的数组的容量)。 每当在删除元素的操作之前,如果表中的元素个数小于等于数组容量的四分之一,则将动态分配的数组容量缩减为原来的一半。此次删除操作造成的表中已有元素移动的次数等于此操作发生之前表中元素的个数减 1(因为要删除的元素不需要被移动)。 如果某次插入或删除操作没有引起数组容量的变化,则: 对于插入元素的操作,此次操作造成的表中已有元素移动的次数等于插入的位置之后原有元素的个数。如果表中有相同元素导致可插入的位置不唯一,则选择最靠后的位置插入,以便减小表中已有元素移动的次数。 对于删除元素的操作,此次操作造成的表中已有元素移动的次数等于被删除的元素之后原有元素的个数。同样地,如果表中有多个相同的元素,则选择最靠后的元素删除,以便减小表中已有元素移动的次数。 现在,给出一系列的操作,每个操作可以是插入一个元素或删除一个元素(保证要删除的元素一定存在),请你输出每次操作造成的表中已有元素移动的次数。 输入格式 从标准输入读入数据。 第一行输入操作的总次数 n。 接下来 n 行,每行输入一个操作。操作的格式可能是: A x 表示,在表中插入了一个值为 x 的元素; D x 表示,在表中删除了一个值为 x 的元素。 输入的所有元素都在 unsigned int 范围内,即 0≤x<232。 输出格式 输出到标准输出。 对于每次操作,输出一行。每行仅包含一个整数,表示此次操作造成的表中已有元素移动的次数。 样例1输入 9 A 10 A 20 A 10 A 10 D 10 D 20 D 10 D 10 A 0 样例1输出 0 0 2 1 1 0 0 0 0 样例1解释 第 3 次操作导致数组容量从 2 变为 4,造成了 2 次表中已有元素移动; 第 4 次操作造成了元素 20 的 1 次表中已有元素移动; 第 5 次操作造成了元素 20 的 1 次表中已有元素移动; 第 8 次操作导致数组容量从 4 变为 2,但是没有发生表中已有元素移动。 样例2输入 17 A 1 A 2 A 3 A 4 A 5 A 6 A 7 A 8 A 9 D 9 D 8 D 7 D 6 D 5 D 4 D 3 D 2 样例2输出 0 0 2 0 4 0 0 0 8 0 0 0 0 0 3 0 1 子任务 在所有的数据中,操作次数 n≤10000。 对于前 20% 的数据,输入中仅包含插入操作,且每次插入的元素是递增的。 对于前 60% 的数据,输入中仅包含插入操作。 (有兴趣的同学,可以思考 n 如果在 106 左右的规模,此题该怎么做?) 提示 你可以按照题意实现一个符合要求的顺序表,也可以采用其他方式,只要能够正确输出答案即可。
请教各位大神:一种新的数组排序,初测速度是快速排序的50倍,有无市场价值,时间复杂度能计算出来吗?
求助:最近,发现了一种新的数组排序方法,初测其速度是快速排序法的近50倍,想知道有没有市场价值,时间复杂度能计算出来吗?请各位大神赐教! 下面,为了便于区别说明将这个新方法暂且称之占位排序法; 用javascript脚本语言实现快速排序法和占位排序方法之后,然后在同一台(较老旧的,cpu是AMD推土机)电脑上,用ie浏览器运行,样本1000时,快速排序法和占位排序法所耗时分别是:18毫秒、15毫秒;样本10000时,所耗时间分别是:95毫秒、80毫秒;样本100000时,耗时分别是:2405毫秒、407毫秒;样本1000000时,耗时分别是:190888毫秒、3962毫秒;占位方比快排法在对100万数据进行排序时,快了近50倍!!! 占位排序法的理念是:一是,只对数组全局作一次遍历,以后每次只遍历数组的一小部分;二是,把数据的迁移次数降至极致。 占位法的实现方法是: 分段处理、选取代表、萝卜占位、先乱后治、小马快跑、多看少动; 将一个大的数组分割成多个段;首先,要在各段数据p内明确锚点位;其次,锚点位的确定要遵守一个预先明确的固定规范; 其特征还在于,在锚点位上保存的数据不仅要体现自身的数据特征,还要能体现所在段p共同的数据特征。 ![图片说明](https://img-ask.csdn.net/upload/201906/20/1560998940_178698.jpg) 举例:如果在段p内,继续分段p_;假设一个索引地址m; m即是段p的锚点位,又是p_的锚点位,那么在索引m存放的数据,要求必须同时体现:自身的数据征、段p的共同的数据特征、段p_的共同的数据特征;如果对锚点位的数据操作直接作用在需要排序的数据集合上,称之为内建锚点(以下所有实例如无特别说明均采用内建锚点的方式);如果对锚点位的数据进行的操作,还需要额外的映射在另外一个数据集合上,则称之为外建锚点。 列举一个实例,做进一步说明:要从大到小重新排序一个数组A;数组A有100个元素:数据d,规定从A[0]开始每5个数据为一组p_;同时,从A[0]开始每15个数据为一组p;这样一个p内就有3个p_;更进一步,规定每个段的第一个索引对应段的锚点位;那么,A[0]是p的锚点位,又是p_的锚点位;则,A[5]是p_的一个锚点位,而不是p的锚点位;假设初始状态:A[0]存放的数据为5、A[3]为6、A[7]为9、A[12]为8,其他数据均为2;为了在排序过程中,减少遍历和迁移数据的数量,选择最大值来表达每一段数据的共同属性;这样在p_内,A[0]和A[3]的数据值要进行交换;在p内,A[0]和A[7]的数据值还要进行交换,优选的,不仅交换A[0]和A[7]的数据值,还要对A[0]至A[4]与A[5]至A[9],两个p_段内的数据进行整理,使A[0]至A[9]中最大的5个数迁移至A[0]至A[4]中,A[0]至A[9]中最小的5个数迁移至A[5]至A[9]中;最后的结果为:A[0]为9、A[5]为2、A[10]为8。 所述的萝卜占位,指的是“一个萝卜、一个坑”的占位理论在计算机数据整理和筛选过程中的运用; 一方面,更具体的,假设要从一个更大的数据集合中筛选出最小的n个数据,那么只要从数据集合中任意找出n个数据,然后再从这n个数据中找到最大的一个n_,据此就可以准确的进行以下推断:如果存在一个数据大于n_,那么该数据一定不是要选的数据;如果存在一个数据n_1,只要n_1小于n_,那么就又能证明了n_这个数据一定不是要选的,所以就可以安全的用n_1将n_替换掉了;接下来,对调整后的n个数据重新排查,再次找出n个数据中最大的那个,然后重复以上操作,直到将所有符合要求的数据都找出来; 另一方面,设定锚点存放的是每个数据段p的最小的值,p段里面还有p_段,要筛选出最小的n个数据;那么,就可以先遍历p的锚点,选择出锚点值最小的n个p段,再从这n个p段中出找出锚点值最小的n个p_段;再从这n个p_中找到锚点的值最大的p_1;最后遍历这n个p_数据段的数据,只有满足小于或等于p_1,同时又小于n_的值才有可能是要选取的值,所以可以安全的操作这些数据与n_的数据进行互换; 否则,一定不是,所以可以将它们安全的排除在目标之外; 而从一个更大的数据集合中筛选出最大的n个数据,与此逻辑相同,但取值相反;具体的, 只要从数据集合中任意找出n个数据,然后再从这n个数据中找到最小的一个n_,据此就可以准确的进行以下推断:如果存在一个数据小于n_,那么该数据一定不是我们要选的数据;如果存在一个数据n_1,只要n_1大于n_,那么就又能证明了n_这个数据一定不是我们要选的,所以就可以安全的用n_1将n_替换掉了;接下来,对调整后的n个数据重新排查,再次找出n个数据中最小的那个,然后重复以上操作,直到将所有符合要求的数据都找出来; 另一方面,更进一步,接上例,更具体的,设定锚点存放的是每个数据段p的最大的值,p段里面还有p_段,要筛选出最大的n个数据;那么,就可以先遍历p的锚点,选择出锚点值最大的n个p段,再从这n个p段中出找出锚点值最大的n个p_段;再从这n个p_中找到锚点的值最小的p_1;最后遍历这n个p_数据段的数据,只有满足大于或等于p_1,同时又大于n_的值才有可能是要选取的值,所以可以安全的操作这些数据与n_的数据进行互换;否则,一定不是,所以可以将它们安全的排除在目标之外; 通过这种方法有效的减少了数据的遍历数量和数据的交换次数; ![图片说明](https://img-ask.csdn.net/upload/201906/20/1560999113_571306.jpg) ``` <!doctype html><head><meta charset="UTF-8"><title>占位排序法</title></head><body><script> /**********用于随机产生一个测试用数组*****/ function arrcf(arr,arrLength){ for(var i = 0; i < arrLength; i++){arr[i]=Math.floor(Math.random()*10000);};} var arr = new Array(); arrcf(arr,1000000);//调用生成随机数组 var d = new Date(); var t = d.getTime();//记录程序开始的 /**********用于随机产生一个测试用数组****/ var z =25; //步长,每次可排好的数据个数,可调整 var p =4*z; //数据分段长度,可根据实际情况调整 var pxb = 0; //prr数组中arr[prr[*]]最大值的下标* var pxm = 0; //arr[prr[*]]中最小值的下标* var f2 = arr.length; //数组长度 var fi = f2-z; //段的头部 var mx = fi; //步长内极值(最小值)的下标 var pi = 0; //中间过渡变量 var prr = new Array();//中间过渡数组 /**** 预处理 ***************/ ycl(f2); /**** 全面排序 *************/ for(var fi=f2-z;fi>0;fi-=z){ //向prr[]填充z个p节点的下标 var prr= new Array(); for (var iii=0;iii<z;iii++ ){ prr[iii]=iii*p;} //找出arr[prr[*]]最小的*值 pxb = prrmax(pxb); //便历节点找出最大的z个数据,更新prr[] for(var ii=(z)*p; ii< fi ;ii+= p){ if(arr[prr[pxb]]<arr[ii]){ prr[pxb]=ii; //重新确定prr[]中的最小值 pxb = prrmax(pxb);}} mx=colt(z,fi); //获取步长内的最小值 //遍历prr数组 for(var i=0;i<z;i++){ pi=prr[i]; if(arr[mx]<arr[prr[i]]){ //步长内的最小值,是否小于段的最大值 var z1= Math.floor(fi/p)*p; if(z1===pi){ //判断步长的头部是否在段内 //处理尾部数据,即步长头部所在的段 var z1= Math.floor(fi/p)*p; for(var ii=z1;ii<fi;ii++){ //遍历arr[]数组的当前段 if(arr[ii] >= arr[prr[pxb]]){ //如果当前值不小于arr[prr[]]最小值 if(arr[ii]>arr[mx]){ dtod(ii,mx); mx=colt(z,fi); //获取步长内的最小值 }} if(arr[ii]>arr[pi]){ //动态维护本段的最大值 pi=ii; }} //保存最大值到段的开头位置 if(arr[pi]>arr[prr[i]]){dtod(pi,prr[i]);} }else{ for(var ii=prr[i];ii<prr[i]+p;ii++){ //遍历arr[]数组的当前段 if(arr[ii] >= arr[prr[pxb]]){ //如果当前值大于等于prr[]中的arr[prr[]]最小值 if(arr[ii]>arr[mx]){ //如果当前值大于数组中的最小值 dtod(mx,ii); //数据交换 mx=colt(z,fi); //重新获取步长内的最小值 }} if(arr[ii]>arr[pi]){ //动态维护本段的最大值 pi=ii; }} //保存最大值到段的开头位置 if(arr[pi]>arr[prr[i]]){ dtod(pi,prr[i]); }}}} if(fi>p*z){ var fz=fi; var zf=fi+z; zpx(fz,zf); }else{ var fz=0; var zf=fi+z; zpx(fz,zf); break; }} /************以下位置用于封装函数*****************************/ //标记段数据的最大值属性 function ycl(f2){ for (var i=0;i<f2;i += p ){ var max=i; var rp=i+p; for(var ii=i;ii<rp;ii++){ if(arr[max]<arr[ii]){ max=ii; }} dtod(i,max); }} //选取步长内最小数据的索引号 function colt(z,fi){var mrx=fi+z; for(var i=fi;i<mrx;i++){if(arr[mx]>arr[i]){mx=i;}}return(mx); } //数据交换 function dtod(dt1,dt2){y=arr[dt1];arr[dt1]=arr[dt2];arr[dt2]=y;} //找出arr[prr[i]]最小的i值 function prrmax(pxb){ var pxb=0; for(var pi = 0;pi<z;pi++){if(arr[prr[pxb]]>arr[prr[pi]]){pxb=pi;}}return(pxb);} //以1为步长,双向式,对数据排序 function zpx(fz,zf){ //zf排序的开始位置,fz排序的结束位置 for(fz;fz<zf;zf){ var mi=fz; //记录最小值 var ma=zf-1; //记录最大值 if(arr[fz]>arr[zf-1]){dtod(fz,zf-1);}//前后两个数比较,交换位置 for(var i=fz;i<zf;i++){ if(arr[i]<arr[mi]){mi=i;}else if(arr[i]>arr[ma]){ ma=i; }} dtod(fz,mi); dtod(ma,zf-1); fz++; zf--; }} /**********以下用于输出结果**********************/ //for(var i=0;i<arr.length;i++){ document.write(arr[i]+",,,,,"+i+"<br>")}; var t2=(new Date().valueOf());document.write("---开始时间---"+t2+"<br>---完成时间---"+t+"<br>-占位排序法-用时--------"+(t2-t)+"---毫秒<br>"); for(var i=0;i<arr.length;i++){if(arr[i-1]>arr[i]){alert("数组排序有误,错误在:"+i);}else{x1=-1;}};if(x1<0){alert("排序正确");}; </script></body></html> ```下面是快排法 ``` ``` <!doctype html><head><meta charset="UTF-8"> <title>快速法数组排序</title></head><body> <script> //用于随机产生一个测试用数组 function arrcf(arr,arrLength){ //数组名字(调用前在函数外声明一下,做在全局的),数组长度 for(var i = 0; i < arrLength; i++){arr[i]=Math.floor(Math.random()*1000);}; } //调用生成随机数组 var arr = new Array(); arrcf(arr,1000000); var d = new Date(); var t = d.getTime();//记录程序开始的时间,用于测试程序执行效率 /********* (以下代码采用52.0Hz的方案,https://blog.csdn.net/Loving_M/article/details/52993521)******/ var times=0; var quickSort=function(arr){ //如果数组长度小于等于1无需判断直接返回即可 if(arr.length<=1){return arr;} var midIndex=Math.floor(arr.length/2);//取基准点 var midIndexVal=arr.splice(midIndex,1);//取基准点的值,splice(index,1)函数可以返回数组中被删除的那个数arr[index+1] var left=[];//存放比基准点小的数组 var right=[];//存放比基准点大的数组 //遍历数组,进行判断分配 for(var i=0;i<arr.length;i++){ if(arr[i]<midIndexVal){left.push(arr[i]);}//比基准点小的放在左边数组 else{right.push(arr[i]);}//比基准点大的放在右边数组 } //递归执行以上操作,对左右两个数组进行操作,直到数组长度为<=1; return quickSort(left).concat(midIndexVal,quickSort(right)); }; quickSort(arr); /*******************************************************************************************/ //用于输出结果 var t2=(new Date().valueOf()); document.write("---开始时间---"+ t2 +"<br>---完成时间---"+t+"<br>-快速法-用时----"+(t2-t)+"---毫秒<br>"); </script></body></html> ``` ![图片说明](https://img-ask.csdn.net/upload/201906/20/1561001908_368628.jpg) ![图片说明](https://img-ask.csdn.net/upload/201906/20/1561002457_733470.jpg)
【PHP】合并二维数组内指定的相同键并计算另一键的和后组成新的二位数组
``` array(4) { [0] => array(5) { ["id"] => int(1) ["order_num"] => string(11) "20170823-01" ["name"] => string(4) "4015" ["num"] => int(2000) ["time"] => int(1503590400) } [1] => array(5) { ["id"] => int(2) ["order_num"] => string(11) "20170823-02" ["name"] => string(4) "4015" ["num"] => int(3000) ["time"] => int(1503590400) } [2] => array(5) { ["id"] => int(3) ["order_num"] => string(11) "20170823-03" ["name"] => string(4) "4123" ["num"] => int(1000) ["time"] => int(1503590400) } [3] => array(5) { ["id"] => int(4) ["order_num"] => string(11) "20170823-04" ["name"] => string(4) "4123" ["num"] => int(1000) ["time"] => int(1503590400) } } ``` 原始数组如上 需要将 ["name"] 相同的合并到一起,且所对应的 ["num"]的值为原始数据中两个值的和 可能有多个相同["name"] 因为是新手,试了很多方法都没实现,想请教大牛们,应该怎么实现? 其他的键可以忽略 最终的结果是这种 ``` array(4) { [0] => array(5) { ["name"] => string(4) "4015" ["num"] => int(5000) ["time"] => int(1503590400) } [1] => array(5) { ["name"] => string(4) "4123" ["num"] => int(2000) ["time"] => int(1503590400) } } ```
一道二维数组的ACM题,刚开始接触二维数组,求解答
这是题目 Description potato老师虽然很喜欢教书,但是迫于生活压力,不得不想办法在业余时间挣点外快以养家糊口。 “做什么比较挣钱呢?筛沙子没力气,看大门又不够帅...”potato老师很是无奈。 “张艺谋比你还难看,现在多有钱呀,听说还要导演奥运开幕式呢!你为什么不去娱乐圈发展呢?”lwg在一旁出主意。 嗯,也是,为了生存,就委屈点到娱乐圈混混吧,马上就拍一部激光电影《回来我的爱》。 说干就干,马上海选女主角(和老谋子学的,此举可以吸引媒体的眼球,呵呵),并且特别规定,演员必须具有ac的基本功,否则直接out! 由于策划师风之鱼(大师级水王)宣传到位,来应聘的MM很多,当然包括nit的蛋糕妹妹等呼声很高的美女,就连zsu的jqw都男扮女装来应聘(还好被安全顾问hdu_Bin-Laden认出,给轰走了),看来娱乐圈比acm还吸引人哪... 面试那天,刚好来了m*n个MM,站成一个m*n的队列,副导演Fe(OH)2为每个MM打了分数,分数都是32位有符号整数。 一开始我很纳闷:分数怎么还有负的?Fe(OH)2解释说,根据选拔规则,头发染成黄色、化妆太浓、穿的太少等等都要扣分数的,扣的多了就可能是负分了,当然,如果发现话语中夹有日语,就直接给-2147483648分了。 分数送上来了,是我做决定的时候了,我的一个选拔原则是,要选一个面试分数绝对值(必须还是32位整数)最大的MM。 特别说明:如果不幸选中一个负分的MM,也没关系,因为我觉得,如果不能吸引你,那要想法恶心你。 Input 输入数据有多组,每组的第一行是两个整数m和n,表示应聘MM的总共的行列数,然后是m行整数,每行有n个,m和n的定义见题目的描述。 Output 对于每组输入数据,输出三个整数x,y和s,分别表示选中的MM的行号、列号和分数。 note:行号和列号从1开始,如果有多个MM的分数绝对值一样,那么输出排在最前面的一个(即行号最小的那个,如果行号相同则取列号最小的那个)。 Sample Input 2 3 1 4 -3 -7 3 0 Sample Output 2 1 -7 下面是我的一段代码 #include <iostream> #include <cmath> using namespace std; int main() { int n, m, i, j, a[100][100]; double b, c,d ,h=0,l=0; while (cin >> n >> m) { for (i = 0; i < n; i++) { for (j = 0; j < m; j++) cin >> a[i][j]; } //输入全部分数,并且代给相应数组 for (i = 0; i < n; i++) { for (j = 0; j < m; j++) c = a[i][j]; b = a[0][0]; if (labs(b) < labs(c)) { h = i+1; l = j+1;//行数h,列数l a[0][0] = c;//将绝对值最大的数换给数组a【0】【0】 } } cout << h << " " << l << " " << a[0][0] << endl;//输出行数,列数,该值 } return 0; } 对照着书本来做的,但是总得不到正确的输出,不知道哪里出现了问题,希望能帮我点出还有二维数组需要注意些什么
关于AES加密解密的问题
想问一下,AES对相同的两个数进行加密,比如都是1,得到的加密数据相同吗?我现在在做对一组数据的加密解密,加密过后的两个相同的数据经过解密之后就不相等了,是我的程序有问题,还是本身算法是这样的呢,因为不太懂,还请大侠们指教啊
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
C语言荣获2019年度最佳编程语言
关注、星标公众号,不错过精彩内容作者:黄工公众号:strongerHuang近日,TIOBE官方发布了2020年1月编程语言排行榜单。我在前面给过一篇文章《2019年11月C语言接近Ja...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
一份王者荣耀的英雄数据报告
咪哥杂谈本篇阅读时间约为 6 分钟。1前言前一阵写了关于王者的一些系列文章,从数据的获取到数据清洗,数据落地,都是为了本篇的铺垫。今天来实现一下,看看不同维度得到的结论。2环境准备本次实...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
Java校招入职华为,半年后我跑路了
何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...
立即提问

相似问题

3
要把结构数据以二叉树的形式储存到文件里然后能调用修改怎么做?语言是C++(求帮忙完善代码)
1
[hive]现有一HQL语句,使用group by,在5000W下使用造成hive瘫痪,求优化
2
求一用数据结构c++编写的纸牌游戏程序
3
pyhon3如何快速高效的对比一个列表内的数据是否都相同
4
name属性相同的两个个select2标签值合并到一个数组里了 如何获取每一个name对应标签的值
1
Jmeter中压力测试关于线程组的问题
1
最大三角形, 这个题目怎么做
1
如何将两个文本随机分为个体编号相同的两组
2
输入n(n<=100)个整数,按照绝对值从大到小排序后输出
0
高斯白噪声通过两个幅频特性相似的带通滤波器后的带限白噪声,是否具有相似的统计特性?
2
layui 多个相同下拉框如何监听事件
1
用C语言输出数字重新排列后最大的所有相邻两数乘积的和
3
c语言 超级菜的小白请问怎么通过结构体数组中元素将结构体排序?
3
出构成的最大的三角形的面积,结果保留两位小数。C语言,谢谢
1
运用C语言技术,输出构成的最大的三角形的面积,结果保留两位小数
1
这个问题,用C语言输出构成的最大的三角形的面积,结果保留两位小数。
1
绝对值排序,采用C语言实现,对于每个测试实例,输出排序后的结果,两个数之间用一个空格隔开
0
C语言一个球队排名的排序问题,算这几只球队并列排在(可能)最靠前的位置上。
1
要求在这些点里寻找三个点,使他们构成的三角形拥有的面积最大,如何运用C语言技术的编程手段
0
一个算法要求在这些点里寻找三个点,使他们构成的三角形拥有的面积最大,用C语言怎么实现