您的位置:首页 > 编程语言 > Java开发

简单桶排序——Kotlin与Java实现

2016-06-22 00:00 351 查看
摘要: 简单桶排序的桶排序分别使用Kotlin与Java实现,可以对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} ")
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: