算法-java代码实现基数排序


基数排序

第11节 基数排序练习题

对于一个int数组,请编写一个基数排序算法,对数组元素排序。

给定一个int数组A及数组的大小n,请返回排序后的数组。保证元素均小于等于2000。

测试样例:

[1,2,3,5,2,3],6
[1,2,2,3,3,5]

Java (javac 1.7)

代码自动补全

1

import java.util.*;

2


3

public class RadixSort {

4

   // 各位装通法

5

    public int[] radixSort(int[] A, int n) {

6

        int length = n;

7

        int divisor = 1;// 定义每一轮的除数,1,10,100...

8


9

        int[][] bucket = new int[10][length];// 定义了10个桶,以防每一位都一样全部放入一个桶中

10

        int[] count = new int[10];// 统计每个桶中实际存放的元素个数

11

        int digit;// 获取元素中对应位上的数字,即装入那个桶

12


13

        for (int i = 1; i <= 3; i++) {// 经过4次装通操作,排序完成

14

            for (int temp : A) {// 计算入桶

15

                digit = (temp / divisor) % 10;

16

                bucket[digit][count[digit]++] = temp;

17

            }

18


19

            int k = 0;// 被排序数组的下标

20

            for (int b = 0; b < 10; b++) {// 从0到9号桶按照顺序取出

21

                if (count[b] == 0)// 如果这个桶中没有元素放入,那么跳过

22

                    continue;

23

                for (int w = 0; w < count[b]; w++) {

24

                    A[k++] = bucket[b][w];

25

                }

26

                count[b] = 0;// 桶中的元素已经全部取出,计数器归零

27

            }

28

            divisor *= 10;

29

        }

30

        return A;

31

    }

32

}

您的代码已保存
答案正确:恭喜!您提交的程序通过了所有的测试用例

时间: 2024-08-02 15:13:47

算法-java代码实现基数排序的相关文章

算法-java代码实现希尔排序

希尔排序 第8节 希尔排序练习题 对于一个int数组,请编写一个希尔排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组.保证元素小于等于2000. 测试样例: [1,2,3,5,2,3],6 [1,2,2,3,3,5] Java (javac 1.7) 代码自动补全 1 import java.util.*; 2 3 public class ShellSort { 4 public int[] shellSort(int[] A, int n) { 5 int

算法-java代码实现计数排序

计数排序 第10节 计数排序练习题 对于一个int数组,请编写一个计数排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组. 测试样例: [1,2,3,5,2,3],6 [1,2,2,3,3,5] Java (javac 1.7) 代码自动补全 1 import java.util.*; 2 3 public class CountingSort { 4 public int[] countingSort(int[] A, int n) { 5 countingSo

算法-java代码实现堆排序

堆排序 第7节 堆排序练习题 对于一个int数组,请编写一个堆排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组. 测试样例: [1,2,3,5,2,3],6 [1,2,2,3,3,5] Java (javac 1.7) 代码自动补全 1 import java.util.*; 2 3 public class HeapSort { 4 public int[] heapSort(int[] A, int n) { 5 int lastIndex = n - 1;

十大排序算法 JAVA代码

冒泡排序 插入排序 选择排序 希尔排序 归并排序 快速排序 堆排序 计数排序 基数排序 桶排序  O是指计算机执行命令所需的时间 nlogn是算法的时间复杂度,一般排序用的是log2n 总体总结表:这个有个错误就是归并排序需要一个o(n)的辅助数组  冒泡排序 主要思想:外层循环从1到n-1,内循环从当前外层的元素的下一个位置开始,依次和外层的元素比较,出现逆序就交换. 特点:stable sort(稳定性排序).In-place sort(不占用额外的空间,只是交换元素) 最优复杂度:当输入数

常见排序&amp;查询算法Java代码实现

1. 排序算法代码实现 /** * ascending sort * 外层循环边界条件:总共需要冒泡的轮数--每一轮都将最大或最小的数冒泡到最后 * 内层循环边界条件:冒泡数字移动的边界--最终数字需冒泡到此处 * 时间复杂度:O(n^2) * @param arr */ public static void bubbleSort(int[] arr) { if (arr == null) { throw new RuntimeException("Input arr is null!"

排序算法Java实现(基数排序)

1 package sorting; 2 3 /** 4 * 基数排序 5 * 平均O(d(n+r)),最好O(d(n+r)),最坏O(d(n+r));空间复杂度O(n+r);稳定;较复杂 6 * d为位数,r为分配后链表的个数 7 * @author zeng 8 * 9 */ 10 public class JishuPaixu { 11 12 public static int getNumInPos(int num, int pos) { 13 int tmp = 1; 14 for (

排序与查找简单算法 java代码实现

最近整理了下以前的资料.有的算法没有实现,嘿嘿,以后再补吧! /** * 排序算法的分类如下:      * 1.插入排序(直接插入排序.折半插入排序.希尔排序):      * 2.交换排序(冒泡泡排序.快速排序):      * 3.选择排序(直接选择排序.堆排序):      * 4.归并排序:      *  关于排序方法的选择:      * (1)若n较小(如n≤50),可采用直接插入或直接选择排序.      *  当记录规模较小时,直接插入排序较好:否则因为直接选择移动的记录数少

Kmp算法Java代码实现

public class KMP { public static void main(String[] args) { String str="ababxbababcadfdsss"; String subStr="abcad"; int[] next=getNext(subStr.toCharArray()); int p=kmp(next,str.toCharArray(),subStr.toCharArray()); System.out.println(p)

十大经典排序算法最强总结(含Java代码实现)

最近几天在研究排序算法,看了很多博客,发现网上有的文章中对排序算法解释的并不是很透彻,而且有很多代码都是错误的,例如有的文章中在"桶排序"算法中对每个桶进行排序直接使用了Collection.sort()函数,这样虽然能达到效果,但对于算法研究来讲是不可以的.所以我根据这几天看的文章,整理了一个较为完整的排序算法总结,本文中的所有算法均有JAVA实现,经本人调试无误后才发出,如有错误,请各位前辈指出. 0.排序算法说明 0.1 排序的定义 对一序列对象根据某个关键字进行排序. 0.2