Android Kotlin(11)之《排序算法_选择》

Android Kotlin第十篇 排序算法_选择排序。也许有的地方没有写好,也欢迎大家提出问题,纠正问题。

一、选择排序原理

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。文字就不描述了,找了一个网上动态图,一看就懂:


选择排序_网络图片

二、kotlin选择排序公共方法

这里使用了kotlin高阶函数,目的可以使用各种排序方法,不只是数字,也可以字符串长度等,或者自定义比较方式。以此方法可以通用:

    /**
     * 选择排序
     * @param array
     * @return
     */
    inline fun  sortSelection(array: Array, compare: (T, T) -> Boolean): Array {
        if (array.isEmpty()) return array
        for (i in array.indices) {
            var minIndex = i
            for (j in i until array.size) {
                if (compare(array[j], array[minIndex])) //找到最小的数
                    minIndex = j //将最小数的索引保存
            }
            val temp = array[minIndex]
            array[minIndex] = array[i]
            array[i] = temp
        }
        return array
    }

在上面,大家可能看到inline,对这里我试过如果不使用内联,效率比内联的会低很多,所以这里推荐使用内联方式。

三、kotlin选择排序公共方法使用:

使用方法很简单,就是如下调用方式:


image.png

排序结果:


image.png

代码其实很简单,这里就不上传github,如果上面有错误,或者更好的建议,望评论指出,谢谢!后续还有其他排序方法同步,可以点关注

你可能感兴趣的:(Android Kotlin(11)之《排序算法_选择》)