简单桶排序——Kotlin与Java实现
2016-06-22 00:00
351 查看
摘要: 简单桶排序的桶排序分别使用Kotlin与Java实现,可以对java还有kotlin的语法进行对比
###转载请标明出处:拿客 www.coderknock.com
桶排序 (Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是 比较排序,他不受到 O(n log n) 下限的影响。
下面我们演示一个较为简单的桶排序来说明桶排序的思想:
####Java实现:
####kotlin实现:
###转载请标明出处:拿客 www.coderknock.com
桶排序 (Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是 比较排序,他不受到 O(n log n) 下限的影响。
下面我们演示一个较为简单的桶排序来说明桶排序的思想:
####Java实现:
import java.util.Random; /** * 拿客 www.coderknock.com * 三产 2016年06月22日 * 桶排序Java版本 */ public class BucketSort { public static void main(String[] args) { //进行排序时使用的桶 int[] array = new int[11]; int[] sortArray = new int[5]; Random ra = new Random(); //生成随机数,对这个随机数数组进行排序 for (int i = 0; i < sortArray.length; i++) { sortArray[i] = ra.nextInt(10); } System.out.println("要排序的数组:"); //循环读入要排序的数组 for (int t : sortArray) { System.out.print(t + " "); //把每一个数读到变量t中 array[t]++; //进行计数 } System.out.println(); System.out.println("正序排序后的结果:");//输出完成后 for (int i = 0; i < array.length; i++) { //依次判断a[0]~a[10] for (int j = 0; j < array[i]; j++) { //出现了几次就打印几次 System.out.print(i + " "); } } System.out.println(); System.out.println("倒序排序后的结果:");//输出完成后 for (int i = (array.length - 1); i >= 0; i--) { //依次判断a[0]~a[10] for (int j = 0; j < array[i]; j++) { //出现了几次就打印几次 System.out.print(i + " "); } } } }
####kotlin实现:
import java.util.* /** * 拿客 www.coderknock.com * 三产 2016年06月22日 * 桶排序 */ fun main(args: Array<String>) { //进行排序时使用的桶 val array = IntArray(11)//Kotlin数组声明方式1 var ra = Random() //存储随机数 var randomArray = Array(5, { i -> ra.nextInt(10) })//Kotlin数组声明方式2 println("要排序的数组:") //Kotlin数组循环方式1 randomArray.forEach { i -> print("${i} ") array[i]++ } println() println("正序排序后的结果:")//输出完成后 //Kotlin数组循环方式2 for (i in array.indices) { for (idx in 0..(array[i] - 1)) { print("${i} ") } } println() println("倒序排序后的结果:")//输出完成后 //Kotlin数组循环方式3 相当于 int i=(array.length-1);i>=0;i-- for (i in array.size - 1 downTo 0) { //依次判断a[0]~a[10] for (j in 0..array[i] - 1) { //出现了几次就打印几次 print("${i} ") } } }
相关文章推荐
- 1、Lambda 表达式基础
- 2、Stream API
- 5、杂项
- Java 8 你需要掌握的新特性
- windows配置rocketmq开发环境(idea-eclipse)
- java 读取Excel 日期 不能得到原始数据 例如:42522 实际应是2016年06月
- Java求一个二叉树的镜像(即翻转二叉树)
- Struts2中的OGNL
- Java-当泛型遇到重载
- Spring中引入其他配置文件
- Spring Boot——2分钟构建spring web mvc REST风格HelloWorld
- JAVA自定义注解
- java sql 预编译 orderby
- 使用Spring Boot来加速Java web项目的开发
- 模式的秘密——策略模式
- 【java并发编程】深入剖析ThreadLocal
- Spring MVC系列[1]—— HelloWorld
- Spring AOP 实现原理
- Square全家桶正传——Retrofit使用及配合RxJava实现最大效率开发
- JavaIO流(02)RandomAccessFile类详解