github: https://github.com/intbird/sort-algorithms-kotlin
0.元素交换
临时空间
fun swrap(array: IntArray, index1: Int, index2: Int) {
val temp = array[index2]
array[index2] = array[index1]
array[index1] = temp
}
自身加减
fun swrapInt(array: IntArray, index1: Int, index2: Int) {
array[index1] = array[index1] + array[index2] // 求和
array[index2] = array[index1] - array[index2] // 得差(减数1 = 和 - 减数2)
array[index1] = array[index1] - array[index2] // 得差(减数2 = 和 - 减数1)
}
1.选择排序
依次选出数组中最小的元素后放在最前面
fun sort1(array: IntArray) {
for (i in 0 until array.size - 1) { // 第一小组循环
var minIndex = i // 假定当前为最小值
val next = (i + 1) // 循环向后比较
for (j in next until array.size) { //第二小组循环
if (array[j] < array[minIndex]) { //当前小组内 后一个值比前一个小
minIndex = j // 重新设置组内最小值
}
}
if (minIndex != i) { // 最小值已变
ArrayUtils.swrap(array, i, minIndex) //交换
}
}
}
2.冒泡排序
两两相比,大的都往后放
fun sort2(array: IntArray) {
val size = array.size
for (i in 0..size) {
for (j in 0 until size - i - 1) { // 第i次循环后, [i-size]区间已有序
if (array[