Data update
This commit is contained in:
parent
29a5eea0d4
commit
5c1bb7bfa9
2011 changed files with 35081 additions and 3229 deletions
|
|
@ -1,11 +1,11 @@
|
|||
val .countingSort = fn(.list) {
|
||||
val .min, .max = minmax(.list)
|
||||
var .count = [0] * (.max-.min+1)
|
||||
for .i in .list { .count[.i-.min+1] += 1 }
|
||||
for .i of .count { _for ~= .count[.i] * [.i+.min-1] }
|
||||
val countingSort = fn(zlist) {
|
||||
val mi, ma = minmax(zlist)
|
||||
var cnt = [0] * (ma-mi+1)
|
||||
for i in zlist { cnt[i-mi+1] += 1 }
|
||||
for i of cnt { _for ~= cnt[i] * [i+mi-1] }
|
||||
}
|
||||
|
||||
val .data = [7, 234, -234, 9, 43, 123, 14]
|
||||
val data = [7, 234, -234, 9, 43, 123, 14]
|
||||
|
||||
writeln "Original: ", .data
|
||||
writeln "Sorted : ", .countingSort(.data)
|
||||
writeln "Original: ", data
|
||||
writeln "Sorted : ", countingSort(data)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,72 @@
|
|||
dim array(15)
|
||||
a = 0
|
||||
b = arraysize(array(),1)
|
||||
|
||||
for i = a to b
|
||||
array(i) = ran(1000)
|
||||
next i
|
||||
|
||||
print "unsort ";
|
||||
printArray(array())
|
||||
mx = findMax(array())
|
||||
mn = findMin(array())
|
||||
|
||||
countingSort(array(), mn, mx) // ordenar el array
|
||||
|
||||
print " sort ";
|
||||
printArray(array())
|
||||
end
|
||||
|
||||
sub findMax(array())
|
||||
local length, i
|
||||
|
||||
length = arraysize(array(),1) - 1
|
||||
if length = 0 return 0
|
||||
if length = 1 return array(0)
|
||||
mx = 0
|
||||
for i = 1 to arraysize(array(),1)
|
||||
if array(i) > mx mx = array(i)
|
||||
next i
|
||||
return mx
|
||||
end sub
|
||||
|
||||
sub findMin(array())
|
||||
local length, i
|
||||
|
||||
length = arraysize(array(),1) - 1
|
||||
if length = 0 return 0
|
||||
if length = 1 return array(0)
|
||||
mn = 0
|
||||
for i = 1 to arraysize(array(),1)
|
||||
if array(i) < mn mn = array(i)
|
||||
next i
|
||||
return mn
|
||||
end sub
|
||||
|
||||
sub countingSort(array(), mn, mx)
|
||||
local number, z, i, ub
|
||||
|
||||
dim count(mx - mn)
|
||||
ub = arraysize(array(),1)
|
||||
|
||||
for i = 0 to ub
|
||||
number = array(i)
|
||||
count(number - mn) = count(number - mn) + 1
|
||||
next
|
||||
z = 0
|
||||
for i = mn to mx
|
||||
while count(i - mn) > 0
|
||||
array(z) = i
|
||||
z = z + 1
|
||||
count(i - mn) = count(i - mn) - 1
|
||||
wend
|
||||
next i
|
||||
end sub
|
||||
|
||||
sub printArray(array())
|
||||
for i = 0 to arraysize(array(),1)
|
||||
print array(i) using("####");
|
||||
if i = b then print ""; else print ", "; : fi
|
||||
next i
|
||||
print
|
||||
end sub
|
||||
Loading…
Add table
Add a link
Reference in a new issue