Java实现基于桶式排序思想和计数排序思想实现的基数排序

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

前提:待排序表中的所有待排序关键字必须互不相同;

思想:计数排序算法针对表中的每个记录,扫描待排序的表一趟,统计表中有多少个记录的关键码比该记录的关键码小,假设针对某一个记录,统计出的计数值为c,则该记录在新的有序表中的存放位置即为c。

性能:空间复杂度:o(n);时间复杂度:o(n^2);

public int[] countSort(int[] array){

int[] tempArray = new int[array.length]; //引入辅助数组

for(int i=0;i<array.length;i++){

int count = 0;

for(int j=0;j<array.length;j++){

if(array[i]>array[j]){

count++;

}

}

tempArray[count] = array[i];

}

return tempArray;

}

桶式排序

桶式排序需要待排序的序列满足以下两个特征:

待排序列所有的值处于一个可枚举的范围之类;

待排序列所在的这个可枚举的范围不应该太大,否则排序开销太大。

排序的具体步骤如下:

(1)对于这个可枚举范围构建一个buckets数组,用于记录“落入”每个桶中元素的个数;

(2)将(1)中得到的buckets数组重新进行计算,按如下公式重新计算:

buckets[i] = buckets[i] +buckets[i-1] (其中1<=i<buckets.length);

public static void bucketSort(int[] data) {

//得到待排序元素中的最大值和最小值

int max=data[0],min=data[0];

for(int i=1;i<data.length;i++){

if(data[i]>max){

max = data[i];

}

if(data[i] < min){

min = data[i];

}

}

// 缓存数组

int[] tmp = new int[data.length];

// buckets用于记录待排序元素的信息

// buckets数组定义了max-min+1个桶

int[] buckets = new int[max-min+1];

// 计算每个元素在序列出现的次数

for (int i = 0; i < data.length; i++) {

buckets[data[i] - min]++;

}

// 计算“落入”各桶内的元素在有序序列中的位置

for (int i = 1; i < max - min; i++) {

buckets[i] = buckets[i] + buckets[i - 1];

}

// 将data中的元素完全复制到tmp数组中

System.arraycopy(data, 0, tmp, 0, data.length);

// 根据buckets数组中的信息将待排序列的各元素放入相应位置

for (int k = data.length - 1; k >= 0; k–) {

data[–buckets[tmp[k] - min]] = tmp[k];

}

}

基于桶式排序思想和计数排序思想实现基数排序:

将待排序元素中的每组关键字依次进行桶分配。

public int[] radixSortBuckets(int[] array, int radix) {

// 找到待排序序列中的最大元素

int max = array[0];

for (int i = 1; i < array.length; i++) {

if (array[i] > max) {

max = array[i];

Kafka实战笔记

关于这份笔记,为了不影响大家的阅读体验,我只能在文章中展示部分的章节内容和核心截图

image.png

  • Kafka入门
  • 为什么选择Kafka
  • Karka的安装、管理和配置

image.png

  • Kafka的集群
  • 第一个Kafka程序
  • image.png

afka的生产者

image.png

  • Kafka的消费者
  • 深入理解Kafka
  • 可靠的数据传递

image.png

image.png

  • Spring和Kalka的整合
  • Sprinboot和Kafka的整合
  • Kafka实战之削峰填谷
  • 数据管道和流式处理(了解即可)

image.png

  • Kafka实战之削峰填谷

image.png

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!
)**

[外链图片转存中…(img-kaPSqMEN-1714446870032)]

  • Kafka实战之削峰填谷

[外链图片转存中…(img-FK6Q6fQh-1714446870032)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

  • 24
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值