Kotlin 的冒泡排序算法

问题描述 投票:0回答:1

尝试创建一个基本项目,该项目将从用户那里获取值并将这些值存储在数组中。但该项目没有成功。

我想解决问题并使项目成功......

 override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding= ActivityMainBinding.inflate(layoutInflater)
    setContentView(binding.root)

    binding.Al.setOnClickListener{
        val size=arr.size
        arr[count] = binding.editTextNumber.text.toString().toInt()
        count++
        bubbleSort(arr)
    }
    binding.Sirala.setOnClickListener {
        binding.textView.clearComposingText()
        for (i in arr){
            binding.textView2.append(" "+arr[i])
        }
    }
}



private fun bubbleSort(arr: IntArray): IntArray {
    val n = arr.size
    for (i in 0 until n - 1) {
        for (j in 0 until n - i - 1) {
            if (arr[j] > arr[j + 1]) {
                val temp = arr[j]
                arr[j] = arr[j + 1]
                arr[j + 1] = temp
            }
        }
    }
    return arr
}
android arrays kotlin bubble-sort
1个回答
0
投票

你的内循环索引被搞乱了。 i 和 j 永远不可能相同(这只是一种浪费,你会与自己交换)或 j 小于 i (如果你这样做,你最终会交换之前交换的元素回到原来的位置)。并且内部循环需要一直走到最后,否则如果最后一个元素不在位置,它将永远不会被排序。正确的索引是

j in i+1 until n

© www.soinside.com 2019 - 2024. All rights reserved.