问题描述
我现在有一组数据,比如: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,