September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
|
|
@ -0,0 +1,22 @@
|
|||
// version 1.1.0
|
||||
|
||||
fun countingSort(array: IntArray) {
|
||||
if (array.isEmpty()) return
|
||||
val min = array.min()!!
|
||||
val max = array.max()!!
|
||||
val count = IntArray(max - min + 1) // all elements zero by default
|
||||
for (number in array) count[number - min]++
|
||||
var z = 0
|
||||
for (i in min..max)
|
||||
while (count[i - min] > 0) {
|
||||
array[z++] = i
|
||||
count[i - min]--
|
||||
}
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val array = intArrayOf(4, 65, 2, -31, 0, 99, 2, 83, 782, 1)
|
||||
println("Original : ${array.asList()}")
|
||||
countingSort(array)
|
||||
println("Sorted : ${array.asList()}")
|
||||
}
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
func counting_sort(a, min, max) {
|
||||
var cnt = ([0] * (max - min + 1));
|
||||
a.each { |i| cnt[i-min]++ };
|
||||
return cnt.map {|i| min++; [min-1] * i}.sum;
|
||||
var cnt = ([0] * (max - min + 1))
|
||||
a.each {|i| cnt[i-min]++ }
|
||||
cnt.map {|i| [min++] * i }.flat
|
||||
}
|
||||
|
||||
var a = 100.of {100.rand.int};
|
||||
say counting_sort(a, 0, 100).dump;
|
||||
|
||||
var a = 100.of { 100.irand }
|
||||
say counting_sort(a, 0, 100)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,11 @@
|
|||
fcn countingSort(array, min, max){ // modifies array
|
||||
count:=(max - min + 1).pump(List().write,0); // array of (max - min + 1) zeros
|
||||
foreach number in (array){
|
||||
count[number - min] += 1;
|
||||
}
|
||||
z:=-1;
|
||||
foreach i in ([min .. max]){
|
||||
do(count[i - min]){ array[z += 1] = i }
|
||||
}
|
||||
array
|
||||
}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
array:=List(4, 65, 2, -31, 0, 99, 2, 83, 182, 1);
|
||||
countingSort(array,(0).min(array), (0).max(array)).println();
|
||||
Loading…
Add table
Add a link
Reference in a new issue