选择排序-Kotlin实现

选择排序的思想:

对于一个无序的数组,依次从数组中获得元素,然后从这个元素的后一位开始互相进行比较,在比较的过程中,如果有比当前取到的元素小的数,将其记录下来为min,并记录其索引minIndex,直到数组的末尾,该论循环结束,将当前取的值和比较得出最小的值进行交换。这样最小的值就排列到了数组的前面,循环往复即可完成排序。 优化思路:

在交换的时候进行判断,如果minIndex还是取到的值的索引,那么不进行交换

完整代码如下:

package com.sort
​
import java.text.SimpleDateFormat
import java.util.Date
​
fun main() {
//    val intArray = intArrayOf(34,222,119,0)
    val intArray = IntArray(80000)
    for (i in 0 until 80000) {
        intArray[i] = (Math.random() * 8000000).toInt()
    }
    val date = Date()
    val simpleDateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
    val formatDate = simpleDateFormat.format(date)
    println("排序前的时间:$formatDate")
    selectSort(intArray)
    val date2 = Date()
    val formatDate2 = simpleDateFormat.format(date2)
    println("排序前的时间:$formatDate2")
    println(intArray.contentToString())
}
​
// 选择排序
fun selectSort(array: IntArray) {
    // 每一轮去找到最小的
    for (i in array.indices) {
        var minIndex = i
        var min = array[i]
​
        // 将从i+1开始进行比较,直到列表的末尾
        // 由于i是表示自己,因此没必要和自己比较,所以+1
        for (j in i + 1 until array.size) {
            if (min > array[j]) {
                min = array[j]
                minIndex = j
            }
        }
        // 当minIndex不等于最开始初始化的值后,才进行交换
        if (minIndex != i) {
            array[minIndex] = array[i]
            array[i] = min
        }
​
//        println(array.contentToString())
    }
​
​
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值