aardio 文档
aardio 范例:计数排序
import console;
/*
假设 n 个 0 到 k 之间的整数。
对于每一个输入元素 x ,确定出小于 x 的元素个数 lt ,则 x 可直接放于输出位置 lt + 1 上。
*/
//计数排序算法
var countingSort = function( array ,k){
array_sorted ={};
count ={};
for(i=0;k ){
count[i] = 0;
}
for(i=1;#array;1){
count[ array[i] ] = count[ array[i] ] + 1; //count[n] 包含等于n的个数
}
//统计位置
for(i=1;k;1){
count[i] += count[i-1]; //count[i] 包含小于等于i的个数
}
var n;
for(i=#array;1;-1){
n = array[i]
array_sorted[ count[n] ] = n;
count[n]--;//防止相同的元素n再次出现,将计数减一
}
return array_sorted;
}
console.log("----------------")
console.log("计数排序( 线性时间排序 )")
console.log("----------------")
var array = {12;3;22;7;6;23;26};
//取出最大的数
var max = math.max( table.unpack(array) ) ;
//排序
array = countingSort(array,max )
//输出结果
for(i=1;#array;1){
console.log( array[i] )
}
execute("pause")
Markdown 格式