`
apprentice_ll26
  • 浏览: 26955 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

8种Java排序算法总结6(ZZ)

阅读更多
8、 基数排序

以基数是10为例

①     根据数据项个位上的值,把所有的数据分为10组。

②     然后对这10组数据项重新排列:把所有关键字是以0结尾的数据排在最后面,然后是关键字结尾时1的数据项,照此顺序直到以9结尾的数据项。这个步骤被称为第一趟子排序。

③     在第二趟子排序中,再次把所有的数据项分为10组,但是这一次是根据数据项十位上的值来分组。这次分组不能改变先前的排序顺序。也就是说,第二趟排序之后,从每一组数据项的内部来看,数据项的顺序保持不变;这趟排序必须是稳定。

④     然后再把10组数据项重新合并,排在最前面的是十位上为0的数据项,然后是十位为1的数据项,如此排序到十位上为9的数据项

⑤     对剩余位重复这个过程。如果某些数据项的位数少于其他数据项的,那么认为他们的最高位为0

public static int[] countSort(int[] a, int k) {

     int[] b = new int[a.length];

     int[] c = new int[10];


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

        b[i] = 0;

     }


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

        c[i] = 0;

     }


     int s = 1;

     for (int i = 0; i < k; i++) {

        s = s * 10;

     }


     int temp1 = 0;

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

        temp1 = a[i] % s;

        temp1 = temp1 * 10 / s;


        c[temp1] = c[temp1] + 1;

     }


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

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

     }


     int temp2 = 0;

     for (int i = a.length - 1; i >= 0; i--) {

        temp1 = a[i];

        temp2 = a[i] % s;

        temp2 = temp2 * 10 / s;

        b[c[temp2] - 1] = temp1;

        c[temp2] = c[temp2] - 1;

     }

     return b;

}


参考文献:

1、Java数据结构与算法(第二版)

2、http://www.sorting-algorithms.com/

3、http://blog.csdn.net/yexinghai/archive/2009/10/10/4649923.aspx

4、http://yoyo08.iteye.com/blog/464556

5、http://www.java125.cn/article.asp?id=1683
分享到:
评论

相关推荐

    利用 First Fit 算法解决物流3D bin packing问题 Java实现

    First Fit算法是一种常用的启发式策略,用于解决这类问题。在这个Java实现中,我们探讨如何利用First Fit算法有效地解决3D装箱问题。 First Fit算法的基本思想是将每个3D物体按照其尺寸顺序尝试放入已有的箱子中,...

    利用 Best Fit 算法解决物流3D bin packing问题 Java实现

    "Best Fit"算法是一种常见的启发式策略,用于解决这类问题。下面我们将详细探讨Best Fit算法的原理以及其在Java中的实现。 **Best Fit算法简介** Best Fit算法的基本思想是在每次放入新物体时,选择当前已有的箱子...

    算法参考资料ACM国际大学生程序设计竞赛算法与实现-俞勇

    这些算法包括但不限于排序算法、搜索算法、图算法、动态规划、字符串处理、数学运算等。掌握这些算法是参赛者的基本要求。 知识点三:算法实现 算法实现是指将算法思想转化为具体编程语言的过程。为了在ACM-ICPC中...

    用C++实现的数据结构所有的算法

    排序算法有冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等多种,每种都有其适用场景和效率特点。查找算法包括线性查找、二分查找、哈希查找等,其中二分查找通常在有序数组中使用,哈希查找提供近乎...

    算法参考资料邝斌的ACM模板

    6. 编程语言支持:通常ACM模板会支持一种或多种编程语言,如C、C++或Java。由于这些模板是为了竞赛而准备,它们一般会遵循特定语言的编码规范,并对可能使用的库函数进行优化。 7. 代码复用与模块化:ACM模板会利用...

    算法参考资料ACM模板-复旦大学

    1. 算法基础知识:ACM竞赛中会涉及到许多基础算法的知识,包括但不限于数据结构(如数组、链表、栈、队列、树、图等),基本算法(排序算法、搜索算法等),以及复杂度分析(时间复杂度和空间复杂度的分析方法)。...

    算法参考资料2014年信息学奥林匹克中国国家队论文集

    6. 编程技巧:除了理论知识,算法竞赛还要求参赛者具有扎实的编程能力,包括对编程语言的熟练应用(如C++、Java、Python等)、调试技巧、内存管理等。 7. 竞赛策略:信息学奥林匹克竞赛往往需要在有限的时间内解决...

    模型算法模型课件讲义含代码统计分析

    常见的算法类型包括排序算法(如快速排序、冒泡排序)、搜索算法(如二分查找、深度优先搜索)等。 - **复杂度分析**:算法的性能通常用时间复杂度和空间复杂度来衡量。时间复杂度表示算法执行所需的时间随着输入...

    模型算法模型解析含代码综合评价方法

    示例代码:以下是一个基于Java的简单排序算法实现: ```java public class SortExample { public static void main(String[] args) { int[] array = {5, 3, 8, 4, 2}; for (int i = 0; i ; i++) { for (int j...

    算法参考资料ACM国际大学生程序设计竞赛:知识与入门

    - 编程语言:熟练使用至少一种编程语言,如C++、Java或Python。 - 模拟训练:通过在线平台(如Codeforces、LeetCode)进行题目训练。 - 团队协作:提高团队沟通和协作能力,合理分工。 4. 竞赛过程中的策略 - ...

    Java自学路线图.

    - **数据结构与算法**:掌握常用的数据结构(如数组、链表、树等)和算法(排序、搜索等),这对于编写高效的代码至关重要。 - **操作系统基础**:了解操作系统的基本工作原理及常见的操作系统类型。 #### 二、Java...

    2024嵌入式面试资料华飞智能嵌入式软件工程师(带答案)

    - **常见算法**: 排序算法(如快速排序、归并排序)、查找算法(如二分查找)等。 **2.2 网络通信** - **网络协议**: TCP/IP模型、HTTP、FTP、SMTP等。 - **无线通信技术**: Wi-Fi、蓝牙、NFC、Zigbee等。 - **网络编程...

    HBASE使用注意事项

    - **RowKey优化**:可通过哈希化RowKey实现数据更均匀分布,但可能会影响排序性能。 - **ColumnQualifier的使用**:可用于存储额外信息,但需注意名称长度以减少I/O开销。 #### 三、Java API注意事项 **1. HTable...

Global site tag (gtag.js) - Google Analytics