桶排序——PowerShell版
2024-10-11 13:16:11
读啊哈磊的算法书有感,十一期间想要重新学一学一些基本的算法和数据结构。不想下载编程工具了,毕竟是用室友的电脑,就用PowerShell写一下吧:
$scores = @(88,13,99,26,62,64,77)
#Score's scope is from 0~100
$sortedScore = New-Object System.Collections.ArrayList
for($i=0;$i -le 100;$i++)
{
$sortedScore.add(0)
}
for($i=1;$i -le $scores.count;$i++)
{
$sortedScore[$scores[$i-1]]++
}
Write-Host "The sorted scores are:"
for($i=0;$i -le 100;$i++)
{
if($sortedScore[$i] -ne 0)
{
for($j=0;$j -lt $sortedScore[$i];$j++)
{
$i
}
}
}
1、这里待排序的数组$scores我写死了,也可以改写成动态输入的;
2、对于排序结果我声明了一个动态ArrayList类型数组;
3、0到100分之间每一分都当成是一个桶,排序结果数组的索引分别对应0到100分,并初始化每个索引位的数值为0;
4、对于待排序数组中的每个数都对应于排序结果数组中相应的索引值。例如:88分对应于排序结果数组中的第88位;
5、遍历待排序数组,每遍历一个数,就为排序结果数组相应索引值位置的数值+1;
6、输出排序结果数组,如果索引位数值不为0,说明加过,加过就说明待排序数组中有,索引位数值代表加过的次数,也就是待排序数组中该索引位对应的分数出现过的次数。索引位数值为几就输出几次该索引位对应的分数值;
7、查看排序结果。
结果如下:
缺点:
1、只能排列分数,不能按照得分排列得分者;
2、排序数范围越大,浪费的空间越大(因为要初始化的排序结果数列会随着排序数范围增大而增大);
3、只能对整数进行排序。
最新文章
- NPOI操作EXCEL(五)——含合并单元格复杂表头的EXCEL解析
- SQL SERVER 2012启动失败 because upgrade step 'SSIS_hotfix_install.sql' 失败
- Centos安装lnmp环境
- Rendering Paths
- C++ Combobox输入时自动完成
- IBUS-WARNING **: Process Key Event failed: Timeout was reached
- [学习笔记]设计模式之Builder
- Linux学习笔记24——进程管道
- qml demo分析(maroon-小游戏)
- angular 4 开发环境下打包文件过大
- 外网访问ARM嵌入式Linux系统
- [视频]K8飞刀 一键免杀 IE神洞网马教程
- centos安装nginx和配置
- 1、Saltstack简介及安装配置
- cocos2d - 翻转两个Sprite
- 数据库知识,mysql索引原理
- NSURLConnection基本用法(苹果原生)
- Xsheel远程链接ECS,Xftp上传文件到ECS
- 旅行商(sale)
- HDU——1019Least Common Multiple(多个数的最小公倍数)