桶排序来实现查找一个无序数组中第k个大的元素
程序员文章站
2024-03-15 22:26:45
...
package data.sort.line;
public class SumNum {
public static void bubbleSort(Integer a[],int num){
Integer r[]=new Integer[79];
int index=0;
for (int i = 0; i < a.length; i++) {
if(r[a[i]]==null){
r[a[i]]=1;
}else {
r[a[i]] += 1;
}
}
int k=0;
boolean flag=true;
for (int j = r.length-1; j >=0; j--) {
if(r[j]!=null){
k++;
System.out.println("当前位置存放的元素"+j+"一共重复了"+r[j]+"次");
index+=r[j];
if(index>=num&&flag){
flag=false;
System.out.println("第"+num+"大的元素是"+j+" 所在元素中的位置为"+(a.length-num));
}
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Integer a[] = {0, 3, 1, 12,12,12,12, 34, 2, 6, 21, 78, 9,9,9,9,};
SumNum.bubbleSort(a,16);
}
}
(如果数据的范围大于排序的数据个数时不适用)因为很大范围的数据需要更多的空间来存储
上一篇: 求出数组中元素的总和_在数组中找到三个元素,使其总和等于给定元素K
下一篇: 求1+2+…+n