冒泡排序,通过数组中一个值依次与数组内值进行比较交换,时间复杂度n*n
fun sort(str: String) {
val strs = str.toCharArray()
var i = 0
while (i < strs.size) {
var j = i + 1
while (j < strs.size) {
if (strs[i] > strs[j]) {
var temp = strs[i]
strs[i] = strs[j]
strs[j] = temp
}
j++
}
i++
}
println(String(strs))
}
选择排序,在冒泡基础上进行改进,通过位置记录最后一次排序的下标,省去频繁进行位置交换
fun sortSelect(str: String) {
val strs = str.toCharArray()
var i = 0
while (i < strs.size) {
var j = i + 1
var index = i
while (j < strs.size) {
if (strs[i] > strs[j]) {
index = j
}
j++
}
if (index != 0) {
var temp = strs[i]
strs[i] = strs[index]
strs[index] = temp
}
i++
}
println(String(strs))
}
插入排序,假设前面n-1(其中n>=2)个数已经是排好顺序的,现将第n个数插到前面已经排好的序列中,然后找到合适自己的位置,使得插入第n个数的这个序列也是排好顺序的
fun sortInsert(str: String) {
val strs = str.toCharArray()
var i = 1
while (i < strs.size) {
var j = i
while (j > 0) {
if (strs[j] < strs[j - 1]) {
var temp = strs[j]
strs[j] = strs[j - 1]
strs[j - 1] = temp
}
j--
}
i++
}
println(String(strs))
}