用go语言写一段计算K排序排序次数的算法代码,定义K排序为:首先,算法需要按照某种规则选择数列上至多K个位置,将对应的数抽出来,其他数往左对齐,之后这K个数排序好之后依次放在原数列末尾,以上过程算一次操作
时间: 2023-05-31 17:02:03 浏览: 50
package main
import (
"fmt"
)
func kSort(arr []int, k int) int {
n := len(arr)
count := 0
for i := 0; i < n; i += k {
end := i + k
if end > n {
end = n
}
subArr := arr[i:end]
subLen := len(subArr)
for j := 0; j < subLen; j++ {
minIndex := j
for t := j + 1; t < subLen; t++ {
if subArr[t] < subArr[minIndex] {
minIndex = t
}
}
if minIndex != j {
subArr[j], subArr[minIndex] = subArr[minIndex], subArr[j]
}
}
count++
for j := 0; j < subLen; j++ {
arr[i+j] = subArr[j]
}
}
return count
}
func main() {
arr := []int{9, 7, 3, 5, 6, 8, 1, 2, 4}
k := 3
count := kSort(arr, k)
fmt.Println("排序后的数组:", arr)
fmt.Println("排序次数:", count)
}
相关推荐
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)