build
This commit is contained in:
parent
f3e3204278
commit
f9893a08ea
@ -68,7 +68,35 @@ comments: true
|
|||||||
=== "Go"
|
=== "Go"
|
||||||
|
|
||||||
```go title="bucket_sort.go"
|
```go title="bucket_sort.go"
|
||||||
[class]{}-[func]{bucketSort}
|
/* 桶排序 */
|
||||||
|
func bucketSort(nums []float64) {
|
||||||
|
// 初始化 k = n/2 个桶,预期向每个桶分配 2 个元素
|
||||||
|
k := len(nums) / 2
|
||||||
|
buckets := make([][]float64, k)
|
||||||
|
for i := 0; i < k; i++ {
|
||||||
|
buckets[i] = make([]float64, 0)
|
||||||
|
}
|
||||||
|
// 1. 将数组元素分配到各个桶中
|
||||||
|
for _, num := range nums {
|
||||||
|
// 输入数据范围 [0, 1),使用 num * k 映射到索引范围 [0, k-1]
|
||||||
|
i := int(num) * k
|
||||||
|
// 将 num 添加进桶 i
|
||||||
|
buckets[i] = append(buckets[i], num)
|
||||||
|
}
|
||||||
|
// 2. 对各个桶执行排序
|
||||||
|
for i := 0; i < k; i++ {
|
||||||
|
// 使用内置切片排序函数,也可以替换成其它排序算法
|
||||||
|
sort.Float64s(buckets[i])
|
||||||
|
}
|
||||||
|
// 3. 遍历桶合并结果
|
||||||
|
i := 0
|
||||||
|
for _, bucket := range buckets {
|
||||||
|
for _, num := range bucket {
|
||||||
|
nums[i] = num
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
=== "JavaScript"
|
=== "JavaScript"
|
||||||
@ -98,7 +126,32 @@ comments: true
|
|||||||
=== "Swift"
|
=== "Swift"
|
||||||
|
|
||||||
```swift title="bucket_sort.swift"
|
```swift title="bucket_sort.swift"
|
||||||
[class]{}-[func]{bucketSort}
|
/* 桶排序 */
|
||||||
|
func bucketSort(nums: inout [Double]) {
|
||||||
|
// 初始化 k = n/2 个桶,预期向每个桶分配 2 个元素
|
||||||
|
let k = nums.count / 2
|
||||||
|
var buckets = (0 ..< k).map { _ in [Double]() }
|
||||||
|
// 1. 将数组元素分配到各个桶中
|
||||||
|
for num in nums {
|
||||||
|
// 输入数据范围 [0, 1),使用 num * k 映射到索引范围 [0, k-1]
|
||||||
|
let i = Int(num) * k
|
||||||
|
// 将 num 添加进桶 i
|
||||||
|
buckets[i].append(num)
|
||||||
|
}
|
||||||
|
// 2. 对各个桶执行排序
|
||||||
|
for i in buckets.indices {
|
||||||
|
// 使用内置排序函数,也可以替换成其它排序算法
|
||||||
|
buckets[i].sort()
|
||||||
|
}
|
||||||
|
// 3. 遍历桶合并结果
|
||||||
|
var i = nums.startIndex
|
||||||
|
for bucket in buckets {
|
||||||
|
for num in bucket {
|
||||||
|
nums[i] = num
|
||||||
|
nums.formIndex(after: &i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
=== "Zig"
|
=== "Zig"
|
||||||
|
Loading…
Reference in New Issue
Block a user