代码下载地址:http://www.zuidaima.com/share/1550463272176640.htm
桶式排序: * 桶式排序不再是基于比较的了,它和基数排序同属于分配类的排序, * 这类排序的特点是事先要知道待排 序列的一些特征。 * 桶式排序事先要知道待排 序列在一个范围内,而且这个范围应该不是很大的。 * 比如知道待排序列在[0,M)内,那么可以分配M个桶,第I个桶记录I的出现情况, * 最后根据每个桶收到的位置信息把数据输出成有序的形式。 * 这里我们用两个临时性数组,一个用于记录位置信息,一个用于方便输出数据成有序方式, * 另外我们假设数据落在0到MAX,如果所给数据不是从0开始,你可以把每个数减去最小的数。
package com.zuidaima.bucketsorter; /** *@autho www.zuidaima.com **/ public class BucketSorter { public void sort(int[] keys,int from,int len,int max) { int[] temp=new int[len]; int[] count=new int[max]; for(int i=0;i<len;i++) { count[keys[from+i]]++; } //calculate position info for(int i=1;i<max;i++) { count[i]=count[i]+count[i-1];//这意味着有多少数目小于或等于i,因此它也是position+ 1 } System.arraycopy(keys, from, temp, 0, len); for(int k=len-1;k>=0;k--)//从最末到开头保持稳定性 { keys[--count[temp[k]]]=temp[k];// position +1 =count } } /** * @param args */ public static void main(String[] args) { int[] a={1,4,8,3,2,9,5,0,7,6,9,10,9,13,14,15,11,12,17,16}; BucketSorter bucketSorter=new BucketSorter(); bucketSorter.sort(a,0,a.length,20);//actually is 18, but 20 will also work for(int i=0;i<a.length;i++) { System.out.print(a[i]+","); } } }
标签: 算法 桶式 排序 java sort话题: 语言基础
相关推荐
### 使用Java语言实现桶式排序 #### 知识点概览 - **桶排序的基本原理** - **Java中实现桶排序的关键步骤** - **代码详解:如何通过Java编写桶排序程序** #### 桶排序的基本原理 桶排序是一种分布式的排序算法,其...
在IT领域,排序算法是...通过阅读和运行这些代码,开发者可以更好地掌握每种排序算法的细节,并在实际项目中选择最适合的排序方法。此外,测试程序的编写有助于验证算法的正确性和性能,这对于软件开发来说至关重要。
这里我们主要探讨的是使用Java实现的几种经典排序算法,包括直接选择排序、堆排序、冒泡排序、快速排序、直接插入排序、折半插入排序、Shell排序、归并排序、桶式排序和基数排序。这些算法各有特点,适用于不同的...
### 几种经典排序算法的Java实现 #### 排序算法概述 排序是计算机科学中的基本操作之一,用于处理一组数据元素(或记录),通过排序操作使得这些元素按照一定的关键字顺序排列。根据不同的应用场景和需求,排序...
### Java基础数据结构—排序算法...本文详细介绍了两种常见的排序算法——直接选择排序和堆排序,并给出了具体的Java实现代码。希望通过对这些算法的学习,能够帮助大家更好地理解和掌握排序算法的核心概念和技术细节。
### 各种排序算法详解与Java实现 #### 冒泡排序(Bubble Sort) **基本思想:** 冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作...
### Java基础知识点详解 #### 一、Java特点 1. **面向对象**: - **要素**:类、对象。...5. **桶式排序**:适用于分布均匀的数据。 6. **基数排序**:适用于整数排序,是一种非比较型排序算法。
7.7.6 选择问题的线性期望时间算法 7.8 排序算法的一般下界 7.9 桶式排序 7.10 外部排序 7.10.1 为什么需要新算法 7.10.2 外部排序模型 7.10.3 简单算法 7.10.4 多路合并 7.10.5 多相合并 7.10.6 ...
12.6 桶式排序 12.7 基数排序 12.8 小结 第13课 程序开发 13.1 扎实的基本功 13.1.1 快速的输入能力 13.1.2 编程实现能力 13.1.3 快速排错 13.2 程序开发之前 13.2.1 分析软件的组件模型 13.2.2 建立软件...