[Kotlin]实现八大排序算法·已封装·代码实例
来源:互联网 发布:埋雷软件 编辑:程序博客网 时间:2024/06/11 10:45
>八大排序算法分别是:
- 插入排序:直接插入排序、希尔排序
- 选择排序:简单选择排序、堆排序
- 交换排序:冒泡排序、快速排序
- 归并排序
- 桶排/基数排序
所有算法均已封装好,可以直接使用。到此下载:
http://download.csdn.net/download/shenpibaipao/9940817
>扩展性及抽象结构
介绍一下整个算法的策略类:
abstract class SortStrategy{ enum class Order{ ASC,DEC } enum class IsStable{ Unstable,Stable } var order = Order.ASC //算法是否稳定 abstract val isStable:IsStable //需要实现的排序方法 protected abstract fun<T> sort(ary:Array<T>) where T : Number ,T :Comparable<T> fun<T> sortASC(ary:Array<T>) where T : Number ,T :Comparable<T>{ order = Order.ASC sort(ary) } @Suppress("NOTHING_TO_INLINE") protected inline fun<T> balance(t1:T, t2:T):Boolean where T : Number, T:Comparable<T>{ return when(order){ Order.ASC -> t1 > t2 Order.DEC -> t1 < t2 } } fun<T> sortDEC(ary:Array<T>) where T : Number , T :Comparable<T>{ order = Order.DEC sort(ary) } fun<T> findMax(ary:Array<T>):T where T : Number , T :Comparable<T>{ order = Order.DEC sort(ary) return ary[0] } fun<T> findMin(ary:Array<T>):T where T : Number , T :Comparable<T>{ order = Order.ASC sort(ary) return ary[0] } fun<T> getSortTime(ary:Array<T>):Long where T : Number , T :Comparable<T>{ val useTime = measureTimeMillis { sort(ary.clone()) } println("使用该算法排序大小为${ary.size}的数组用时: $useTime ms") return useTime } fun getStable(){ when(isStable){ IsStable.Stable -> println("该算法稳定") else -> println("该算法不稳定") } } fun<T> Array<T>.swap(first:Int,last:Int) where T : Number , T :Comparable<T>{ if ( first == last ) return val temp = this[first] this[first] = this[last] this[last] = temp } fun<T> Array<T>.print() where T : Number , T :Comparable<T>{ println() this.forEach { print("$it ") } }}
要扩展排序算法库,只需要继承这个抽象类,并重写Sort()方法即可,其中,在比较大小的地方需要直接调用balance(t1,t2),在升序情况下,t1大于t2时返回真值。基于balance()完成sort方法后,可以自动完成按升序排序和按降序排序的方法。
已完成的八大排序算法的扩展可以到这里下载:http://download.csdn.net/download/shenpibaipao/9940817
阅读全文
1 0
- [Kotlin]实现八大排序算法·已封装·代码实例
- 八大排序算法实现
- 八大排序算法实现
- 八大排序算法代码C
- 总结八大排序算法的基本思想与代码实现
- 高自由度:c++八大排序算法实现代码和原理
- 八大排序算法讲解(附java实现代码)
- 八大排序的代码实现
- 八大排序算法的实现
- 八大排序算法的实现
- 八大排序算法-java实现
- 八大排序算法 java实现
- java八大排序算法实现
- Python实现八大排序算法
- 八大排序算法及实现
- 八大排序算法自我实现
- 八大排序算法java实现
- 八大排序算法-java实现
- Linux的一些基本操作以及搭建Redis集群时的一些配置和踩过的坑
- 2.1_数据类型1_赋值
- 循环嵌套性能优化
- hdu5829快速数论变换以及任意模数的拓展!!!
- vue学习相关知识体系及数据双向绑定的理解
- [Kotlin]实现八大排序算法·已封装·代码实例
- TensorFlow实现案例汇集:代码+笔记
- (7)nodejs学习---之模板引擎jade&&ejs
- Java中equals和==的区别
- Ring Buffer (circular Buffer)环形缓冲区简介
- 求一个整数的二进制中1的个数
- ADS-B及雷达显示终端7.1
- 检查点
- /* compiled code */ ?