网站建设及优化心得体会欧美普货专线是快递吗
网站建设及优化心得体会,欧美普货专线是快递吗,wordpress 微信连接数据库文件,网站做联盟广告能赚钱吗基数排序#xff08;Radix Sort#xff09;是一种线性时间复杂度的排序算法#xff0c;其时间复杂度为O(d(nk))#xff0c;其中d是数字的位数#xff0c;k是进制数。基数排序是一种非比较排序算法#xff0c;它按照数位的大小来进行排序。它可以处理正整数、负整数和小数…基数排序Radix Sort是一种线性时间复杂度的排序算法其时间复杂度为O(d(nk))其中d是数字的位数k是进制数。基数排序是一种非比较排序算法它按照数位的大小来进行排序。它可以处理正整数、负整数和小数。
基数排序的实现过程如下 找到最大数并确定最大数的位数。 从个位数开始把所有数按照该位数进行排序。可以使用计数排序或桶排序。排序后原数组变成了按照该位数排序后的数组。 重复第二步直到最大数的最高位被处理完。
举个例子
假设有以下六个数字要排序234612673489。我们先找到最大数89确定最大数的位数为2。
第一轮排序按照个位数排序
个位数桶1桶2桶3桶4桶5桶6桶7桶8桶9323344667892126
第二轮排序按照十位数排序
十位数桶1桶2桶3桶4桶5桶6桶7桶8桶931223344667889
最终排序结果为122334466789。 Java实现基数排序的核心思想是将数字按照每个位数分别排序从低位到高位依次进行排序最后得到有序序列。
下面是Java实现基数排序的代码
public class RadixSort {/*** 基数排序* param arr 待排序数组*/public static void radixSort(int[] arr) {if (arr null || arr.length 0) return;int max arr[0];for (int i 1; i arr.length; i) {if (arr[i] max) max arr[i]; // 找到最大值}int radix 10; // 进制数这里是10进制int exp 1; // 指数int[] aux new int[arr.length]; // 临时数组while (max / exp 0) { // 从个位开始对每一位进行排序int[] buckets new int[radix];// 统计每个桶中的记录数for (int i 0; i arr.length; i) {int bucketIndex (arr[i] / exp) % radix;buckets[bucketIndex];}// 将各个桶中的数字个数转化成各个桶中最后一个数字的索引位置for (int i 1; i radix; i) {buckets[i] buckets[i - 1];}// 将原数组中的元素放入临时数组中根据桶中位置排序for (int i arr.length - 1; i 0; i--) {int bucketIndex (arr[i] / exp) % radix;aux[--buckets[bucketIndex]] arr[i];}// 将有序的数组写回原数组for (int i 0; i arr.length; i) {arr[i] aux[i];}exp * radix;}}public static void main(String[] args) {int[] arr { 170, 45, 75, 90, 802, 24, 2, 66 };radixSort(arr);System.out.println(Arrays.toString(arr)); // [2, 24, 45, 66, 75, 90, 170, 802]}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/89623.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!