用go语言写一段计算K排序最少排序次数的算法代码,定义K排序为:首先,算法需要将数组中的元素从小到大排列,按照某种规则选择数列上至多K个位置,将对应的数抽出来,其他数往左对齐,之后这K个数排序好之后依次放在原数列末尾,以上过程算一次操作
时间: 2023-05-31 17:03:01 浏览: 53
```go
package main
import (
"fmt"
"sort"
)
func kSort(nums []int, k int) int {
n := len(nums)
sorted := make([]int, n)
copy(sorted, nums)
sort.Ints(sorted)
cnt := 0
for i := 0; i < n; i++ {
if nums[i] != sorted[i] {
cnt++
if i+k <= n {
subset := nums[i : i+k]
sort.Ints(subset)
copy(nums[i:i+k], subset)
} else {
subset := nums[i:n]
sort.Ints(subset)
copy(nums[i:n], subset)
}
}
}
return cnt
}
func main() {
nums := []int{3, 1, 5, 4, 2}
k := 2
cnt := kSort(nums, k)
fmt.Println(cnt) // 输出 2
}
```
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)