拟有100个随机字母,统计每个字母出现的次数,并对字母次数进行“快速排序”并输出结果

这里简单说一个方法,将map 的value值导入数组
Object[] l =map.values().toArray();返回一个Object类型数组

public class RandomChar {
public static void main(String[] args) {
String[] arr={"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
Random rdm = new Random();
for(int i=0;i<100;i++){
   int j=rdm.nextInt(26);
   if(map.get(arr[j])==null){
   map.put(arr[j],1);
   }else{
   map.put(arr[j],map.get(arr[j])+1);
   }
} 
map.forEach((k,v)->System.out.println(k+" "+v));
System.out.println("----------------");
  System.out.println("将集合map的value值导入数组");

 Object[] array= map.values().toArray();
   for (Object object : array) {
   System.out.print(object+" ");
  }


System.out.println("对集合中字母出现的次数进行快速排序");
boss(array,0,array.length-1);

System.out.println("排序后的数组为:");
  for(int i=0;i<=array.length-1;i++){
   System.out.print(array[i]+",");
  }
}



public static int Sort(Object[] array,int low,int high){//第一趟快排,周到中轴移动元素
   int key;//定义中轴
   key=(int) array[low];//找数组中的一个随机元素为中轴,一般来说定义第一个为第一次的中轴
while(low<high){//当地位<高位的时候让他循环,分表
    while(low<high && key<=(int)array[high]){//跟高为比 如果中轴比高位小,移动高位进行下一次比较
     high--;//高位移动是减减
    }
     array[low]=array[high];

 while(low<high && key>=(int)array[low]){
     low++;
    }
    array[high]=array[low];
    }
    //当退出循环的时候,low和high重叠,此时low就是中轴的下标
  array[low]=key;//把刚开始保存的中轴的值赋值给中轴的位置
   return low;//把新的中轴下标返回
   }
   
public static void boss(Object[] array,int low,int high){
int mid;
if(low<high){
mid=Sort(array, low, high);
   boss(array, low,mid-1);
   boss(array,mid+1, high);
    }
 }
 }
 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值