求对一组数据进行排名的算法

问题描述

我现在有一组数据,比如:25,19,29,3怎么用java获得这组数据的排名,获得排名的结果应该是3,2,4,1如果有相等的数据,比如:25,5,5,10应该获得结果3,1,1,2望高手解答,非常谢谢!

解决方案

解决方案二:
你这个问题我见到过.就在CSDN..一模一样的.你搜搜应该能找到答案.的.
解决方案三:
是我以前发的,不过现在还在考虑第二种情况,如果有数据相同该怎么判断。基础比较差哎谢谢回复
解决方案四:
importjava.util.Arrays;publicclassMapSort{publicstaticvoidmain(String[]args){int[]a=newint[]{25,5,5,5,5,5,10,123,12,5,10,25,7};int[]b=newint[a.length];int[]c=newint[a.length];for(inti=0;i<a.length;i++){b[i]=a[i];System.out.print(b[i]+"t");}System.out.println();Arrays.sort(b);for(inti=0;i<a.length;i++){System.out.print(b[i]+"t");}System.out.println();for(inti=0;i<a.length;i++){c[i]=getIndex(a[i],b);System.out.print(c[i]+"t");}}publicstaticintgetIndex(inte,int[]a){inttemp=1;if(e==a[0]){returntemp;}for(inti=temp;i<a.length;i++){if(e==a[i]){return++temp;}else{if(a[i-1]==a[i]){}else{temp++;}}}return0;}}

//Result://25555551012312510257//55555571010122525123//5111113641352自己试着写了一下,不过效率太低了,用了3个数组。。。
解决方案五:
publicclassArrayRank{publicstaticvoidmain(Stringargs[]){int[]arr={25,19,29,3};intn=arr.length;int[]arr1=newint[n];for(inti=0;i<n;i++){arr1[i]=arr[i];}for(inti=0;i<n-1;i++){intlowerIndex=i;//找出最小的索引for(intj=i+1;j<n;j++){if(arr[j]<arr[lowerIndex]){lowerIndex=j;}}inttemp=arr[i];arr[i]=arr[lowerIndex];arr[lowerIndex]=temp;}System.out.println("arr1:");for(inti:arr1){System.out.print(i+"");}System.out.println();System.out.println("arr:");for(inti:arr){System.out.print(i+"");}System.out.println();System.out.println("数组排名结果");for(inti=0;i<n;i++){for(intj=0;j<n;j++){if(arr1[i]==arr[j]){System.out.print((j+1)+"");}}}}}
解决方案六:
该回复于2010-05-11 08:06:50被版主删除
解决方案七:
publicstaticvoidmain(String[]args){int[]arr={25,5,5,5,5,5,10,123,2,12,5,10,2,25,7};int[]out=newint[arr.length];for(inti=0;i<arr.length;i++){intno=1;for(intj=0;j<arr.length;j++){if(j!=i&&arr[j]<arr[i])no++;}out[i]=no;}for(inti=0;i<out.length;i++){intcnt=0;for(intj=i+1;j<out.length;j++){if(out[i]==out[j]){cnt++;break;}}if(cnt>0){for(intk=0;k<out.length;k++){if(out[k]>out[i]){out[k]-=cnt;}}}}for(inti=0;i<out.length;i++){System.out.print(out[i]+",");}}

6,2,2,2,2,2,4,7,1,5,2,4,1,6,3,
解决方案八:
publicstaticvoidmain(String[]args){int[]arr={25,5,5,5,5,5,10,0,2,12,5,10,2,25,7};int[]out=newint[arr.length];intno=0;intoldVal=0;intnewVal=0;for(inti=0;i<arr.length;i++){if(no>0&&arr[i]<=oldVal)continue;if(arr[i]==newVal)oldVal--;newVal=arr[i];for(intj=0;j<arr.length;j++){if(no>0){if(arr[j]<newVal&&arr[j]>oldVal)newVal=arr[j];}else{if(arr[j]<newVal)newVal=arr[j];}}if(oldVal!=newVal){no++;i=0;for(intj=0;j<arr.length;j++){if(arr[j]==newVal)out[j]=no;}oldVal=newVal;}}for(inti=0;i<out.length;i++){System.out.print(out[i]+",");}}

7,3,3,3,3,3,5,1,2,6,3,5,2,7,4,

时间: 2024-10-27 06:12:30

求对一组数据进行排名的算法的相关文章

代码-求大神帮忙,在MATLAB上用pca算法读入一组数据,分析处理结果

问题描述 求大神帮忙,在MATLAB上用pca算法读入一组数据,分析处理结果 求一个代码,数据是一个word表格,大约读入5000个数据,谢谢啊 解决方案 oo之前学过现在全部还给老师了

初学者,想问大神,如何比较一组数据, 不同类型的 数据 ?求指教

问题描述 初学者,想问大神,如何比较一组数据, 不同类型的 数据 ?求指教 想问大神,如何比较一组数据, 不同类型的 数据 ?求指教,别人说可以用链表(我不会)有别的方法吗 解决方案 比较数据的关键不在链表还是数组,而在于算法本身. 如果你觉得链表复杂,就用数组,以及任何你可以用来表示一组数字的类型. 解决方案二: 不同类型的 数据,你的比较规则是什么? 一组数据,是如何保存的呢?如果是连续保存,直接按内存中的内容比较,简单一些:除非是按链表保存的,才可以用链表.否则不是在自找麻烦! 解决方案三

排列组合 算法-问一道排列组合题 一组数据 随机选四个数组成四元组,请问总共有多少个偶排列,

问题描述 问一道排列组合题 一组数据 随机选四个数组成四元组,请问总共有多少个偶排列, 问一道排列组合题 一组数据 随机选四个数组成四元组,请问总共有多少个偶排列,数组例如(±1.6,±1,±0.6,0) 七选四 解决方案 840-------偶排列数:420 程序 public class test { static void f(double[] a,int n,String v){ if(n==a.length){ System.out.println(v); }else{ f(a,n+1

EXCEL中求两个时间间隔多少小时的算法

今天收到学员来信要求计算两个时间点之间间隔多少小时的算法,同时还附带要求:每满30分钟按0.5小时计算,如25分钟为 0,45分钟只能计0.5小时.这个应用在计算加班工时中特别有用,现分享如下: 假设A列放置的是开始时间,B列放置是 结束时间,C列中求加班小时数. 开始时间 结束时间 加班小时数 ******** 8:00 ******** 16:00 8 ******** 8:00 ******** 15:30 7.5 ******** 16:00 ******** 0:00 8 ******

Excel2013中对不并列的数据进行排名

  当我们不方便或者不能对数据进行排序时,需要对数据进行排名(排位),很多人选择用 RANK 函数,但是 RANK 函数有一个特定:对于相同的数据(重复数据)进行排名时是并列排名的,并且会占空名次.例如对100.100.99进行排名,得出的结果分别是1.1.3,而不是1.2.3或1.1.2.下面,就教大家怎么解决这个问题. 案例演示 ①启动Excel2013,小编初略的制作了一份表格,看到有一些并列的数据,在F2单元格输入公式:=RANK(E2,$E$2:$E$10)+COUNTIF($E$1:

java求一个如何切分多个时间段算法

问题描述 java求一个如何切分多个时间段算法 例如现在有时间 5.13-10.1 5.3-6.1 6.1-6.2 怎么能变成 5.3-5.13 5.13-6.1 6.1-6.2 解决方案 先按照 杠 把所有日期拆分出来,然后按照你的规则排序,然后从第二个开始,到倒数第二个,每个和它前面及后面的组成一组

access-求个查询写法,统计一组数据里数字连续重复出现多次的次数?

问题描述 求个查询写法,统计一组数据里数字连续重复出现多次的次数? 表: 部门号 a b c 时间 110 1 2 1 2014-11-10 111 2 2 4 2014-11-10 112 2 2 4 2014-11-10 113 1 3 2 2014-11-10 114 4 3 3 2014-11-10 116 4 1 1 2014-11-10 115 2 3 2 2014-11-10 117 2 1 1 2014-11-11 119 4 3 4 2014-11-11 118 2 2 1 2

ado-求个查询写法,统计一组数据里数字连续重复出现多次,的次数

问题描述 求个查询写法,统计一组数据里数字连续重复出现多次,的次数 表: 部门号 a b c 时间 110 1 2 1 2014-11-10 111 2 2 4 2014-11-10 112 2 2 4 2014-11-10 113 1 3 2 2014-11-10 114 4 3 3 2014-11-10 116 4 1 1 2014-11-10 115 2 3 2 2014-11-10 117 2 1 1 2014-11-11 119 4 3 4 2014-11-11 118 2 2 1 2

java-求一个软件内用户热度自动排名的算法

问题描述 求一个软件内用户热度自动排名的算法 求大神能给个类似微博,最好是快手那样的用户热度的排名算法,比如视频的有喜欢,赞,和浏览量,三个值,比如在多长时间里的点击量,就是瞬发量的比和其他的比的算法 解决方案 参考:http://www.jianshu.com/p/44bee121463a 解决方案二: 这个你们可以定义自己内部的规则 解决方案三: 实际上简单的规则,自己写一个就行,如果是比较精确的,可以参考http://www.jianshu.com/p/44bee121463a 这里的六大