Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 50f983b

Browse files
add counting sort
1 parent d8f0817 commit 50f983b

File tree

3 files changed

+52
-0
lines changed

3 files changed

+52
-0
lines changed

‎README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
* Heap sort (Пирамидальная сортировка, «Сортировка кучей»): [example](https://github.com/dreddsa5dies/algorithm/tree/master/heapSort)
1414
* Merge sort (Сортировка слиянием): [example](https://github.com/dreddsa5dies/algorithm/tree/master/mergeSort)
1515
* Radix sort (Поразрядная сортировка): [example](https://github.com/dreddsa5dies/algorithm/tree/master/radixSort)
16+
* Counting sort (Сортировка подсчётом): [example](https://github.com/dreddsa5dies/algorithm/tree/master/countingSort)
1617
### Search:
1718
* Binary search (Бинарный поиск): [example](https://github.com/dreddsa5dies/algorithm/tree/master/binarySearch)
1819
* Breadth-first search, BFS (Поиск в ширину (англ. breadth-first search, BFS) — метод обхода графа и поиска пути в графе): [example](https://github.com/dreddsa5dies/algorithm/tree/master/BFS)

‎countingSort/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Сортировка подсчётом (англ. counting sort; сортировка посредством подсчёта англ. sorting by counting) — алгоритм сортировки, в котором используется диапазон чисел сортируемого массива (списка) для подсчёта совпадающих элементов. Применение сортировки подсчётом целесообразно лишь тогда, когда сортируемые числа имеют (или их можно отобразить в) диапазон возможных значений, который достаточно мал по сравнению с сортируемым множеством, например, миллион натуральных чисел меньших 1000.

‎countingSort/countingSort.go

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/dreddsa5dies/algorithm/util"
7+
)
8+
9+
func main() {
10+
arr := util.RandomInt() // срез int
11+
12+
fmt.Println("Unsorted List:", arr)
13+
14+
k := getK(arr)
15+
tmpArr := make([]int, k)
16+
17+
for i := 0; i < len(arr); i++ {
18+
tmpArr[arr[i]]++
19+
}
20+
21+
for i, j := 0, 0; i < k; i++ {
22+
for {
23+
if tmpArr[i] > 0 {
24+
arr[j] = i
25+
j++
26+
tmpArr[i]--
27+
continue
28+
}
29+
break
30+
}
31+
}
32+
33+
fmt.Println("Sorted List: ", arr)
34+
}
35+
36+
func getK(arr []int) int {
37+
if len(arr) == 0 {
38+
return 1
39+
}
40+
41+
k := arr[0]
42+
43+
for _, v := range arr {
44+
if v > k {
45+
k = v
46+
}
47+
}
48+
49+
return k + 1
50+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /