桶排序——PowerShell版

简介: 读啊哈磊的算法书有感,十一期间想要重新学一学一些基本的算法和数据结构。不想下载编程工具了,毕竟是用室友的电脑,就用PowerShell写一下吧: $scores = @(88,13,99,26,62,64,77) #Score's scope is from 0~100 $sortedScore = New-Object System.

读啊哈磊的算法书有感,十一期间想要重新学一学一些基本的算法和数据结构。不想下载编程工具了,毕竟是用室友的电脑,就用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、只能对整数进行排序。

相关文章
|
9月前
|
存储 算法 搜索推荐
|
9月前
|
算法 搜索推荐 Shell
|
9月前
|
机器学习/深度学习 算法 搜索推荐
【排序算法】冒泡排序,选择排序,插入排序算法原理及Python代码实现
【排序算法】冒泡排序,选择排序,插入排序算法原理及Python代码实现
|
10月前
|
搜索推荐
排序算法——希尔排序图文详解(一)
排序算法——希尔排序图文详解
|
10月前
|
搜索推荐
排序算法——希尔排序图文详解(二)
排序算法——希尔排序图文详解
|
12月前
|
算法 搜索推荐
选择排序与堆排序(还记得这些经典算法吗?)
选择排序与堆排序(还记得这些经典算法吗?)
选择排序与堆排序(还记得这些经典算法吗?)
|
机器学习/深度学习 搜索推荐 算法
图解希尔排序——希尔排序算法(shell sort)
图解希尔排序——希尔排序算法(shell sort)
230 0
图解希尔排序——希尔排序算法(shell sort)
|
算法 搜索推荐 Shell
python实现【希尔排序】(Shell Sort)
python实现【希尔排序】(Shell Sort)
python实现【希尔排序】(Shell Sort)
|
人工智能 算法 搜索推荐
比冒泡算法还简单的排序算法:看起来满是bug的程序,居然是对的
比冒泡算法还简单的排序算法:看起来满是bug的程序,居然是对的
比冒泡算法还简单的排序算法:看起来满是bug的程序,居然是对的
|
算法 搜索推荐 Java
经典算法之希尔排序(Shell Sort)
经典算法之希尔排序(Shell Sort)
123 0
经典算法之希尔排序(Shell Sort)