September 2017 Update

This commit is contained in:
Ingy döt Net 2017-09-23 10:01:46 +02:00
parent bba7bfd280
commit ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions

View file

@ -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()}")
}

View file

@ -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)

View file

@ -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
}

View file

@ -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();