求JAVA大神!

 我来答
紫薇参星
科技发烧友

2017-03-02 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3616万
展开全部

按照你的要求编写的Java程序如下,你看看吧.

import java.util.Arrays;
public class BB {
 public static void sort(int[] arr, int len) {
  int result[]=new int[len];//结果数组
  int count[]=new int[len];//数字出现频率数组
  boolean b[]=new boolean[len];//数组元素是否处理过的辅助数组
  //生成数字出现频率数组
  for(int i=0;i<arr.length;i++){
   if(b[i]==false){
    int times=1;
    int j;
    b[i]=true;
    for(j=i+1;j<arr.length;j++){
     if(arr[i]==arr[j]){
      times++;
      b[j]=true;
     }
    }
    if(j==arr.length){
     for(int k=i;k<i+times;k++){
      count[k]=times;
     }
    }
   }
  }
  //根据数字出现频率数组,对原始数组排序
  int resultIndex=0;
  for(int j=0;j<count.length;j++){
   int maxIndex=0;
   int countMax=count[0];
   for(int i=1;i<count.length;i++){
    if(countMax<count[i]){
     countMax=count[i];
     maxIndex=i;
    }
   }
   for(int k=maxIndex;k<maxIndex+count[maxIndex];k++){
    result[resultIndex++]=arr[k];
    count[k]=0;
   }
   j=j+count[maxIndex];
  }
  System.out.println(Arrays.toString(result));
 }
 public static void main(String[] args) {
  int arr[]={1,2,2,3,3,3,4,4,5,5,5,5,6,6,6,7,8,9,10};
  sort(arr,arr.length);
 }
}

运行结果

[5, 5, 5, 5, 3, 3, 3, 6, 6, 6, 2, 2, 4, 4, 1, 7, 8, 9, 10]

AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
ab...9@33sn.cc
2017-03-01 · TA获得超过281个赞
知道答主
回答量:342
采纳率:0%
帮助的人:95万
展开全部
急么看我可以明天中午给你
追问
明天之内都行,如果可以,给你追加悬赏。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fish算法
2017-03-02 · 专注编程和算法一两年
fish算法
采纳数:30 获赞数:44

向TA提问 私信TA
展开全部
static void sortByCount(int[] arr, int len) {
HashMap<Integer, Integer> count = new HashMap<>();
StringBuilder order = new StringBuilder();

for (int i = 0; i < len; i++) {
Integer c = count.get(arr[i]);
if (c == null) {
c = 1;
} else {
c += 1;
}
count.put(arr[i], c);

int index = order.indexOf(arr[i] + "");
if (index == -1) {
order.append(arr[i]);
} else {
for (int j = 0; j < index; j++) {
char ch = order.charAt(j);
int tempCount = count.get(Integer.parseInt(ch + ""));
if (tempCount < c) {
order.deleteCharAt(j);
order.insert(j, arr[i]);
order.deleteCharAt(index);
order.insert(j + 1, ch);
break;
}
}
}
}

int tempIndex = 0;
for (int i = 0; i < order.length(); i++) {
int number = Integer.parseInt(order.charAt(i) + "");
int c = count.get(number);
for (int j = 0; j < c; j++) {
arr[tempIndex++] = number;
}
}
}
追问
为什么报,空指针??
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式