桶排序——PowerShell版
读啊哈磊的算法书有感,十一期间想要重新学一学一些基本的算法和数据结构。不想下载编程工具了,毕竟是用室友的电脑,就用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、只能对整数进行排序。
桶排序——PowerShell版的更多相关文章
- c++复杂桶排序Java版
c++复杂桶排序Java版 题目和我的前几个排序一样 这次是Java版的 代码 + 注释 package com.vdian.qatest.supertagbiz.test.niu; /** * Cr ...
- 冒泡排序——PowerShell版
继续读啊哈磊算法有感系列.上一篇是桶排序,在结尾总结了一下简化版桶排序的缺点.这一篇来说一下冒泡排序,冒泡排序可以很好的克服桶排序的缺点.下面我们先来说说冒泡排序的过程与思想—— 冒泡排序的过程: 第 ...
- Maximum Gap——桶排序
Given an unsorted array, find the maximum difference between the successive elements in its sorted f ...
- 算法-桶排序(Bucket sort)
本文由@呆代待殆原创,转载请注明出处. 简介:这个排序算法不属于比较排序,在平均情况下他的时间代价是O(n),并且它假设它的输入数据均匀的分布在一个固定的区间里. 思路:桶排序假设他的输入均匀的分布在 ...
- c++简单桶排序
c++简单桶排序 题目一样,还是排序 桶排序是排序算法里比较快的 代码 + 注释 #include <bits/stdc++.h> using namespace std; int mai ...
- 桶排序 && leetcode 41
桶排序 对于0-1000 ,用1001个桶 简单版 或者用10个桶0-9,先按各位装桶,然后依(桶)次放回,然后再按十位放桶,放回,然后百位. 也就是基数排序 https://www.cnblogs ...
- 【PHP数据结构】其它排序:简单选择、桶排序
这是我们算法正式文章系列的最后一篇文章了,关于排序的知识我们学习了很多,包括常见的冒泡和快排,也学习过了不太常见的简单插入和希尔排序.既然今天这是最后一篇文章,也是排序相关的最后一篇,那我们就来轻松一 ...
- 计数排序和桶排序(Java实现)
目录 比较和非比较的区别 计数排序 计数排序适用数据范围 过程分析 桶排序 网络流传桶排序算法勘误 桶排序适用数据范围 过程分析 比较和非比较的区别 常见的快速排序.归并排序.堆排序.冒泡排序等属于比 ...
- Java排序算法——桶排序
文字部分为转载:http://hxraid.iteye.com/blog/647759 对N个关键字进行桶排序的时间复杂度分为两个部分: (1) 循环计算每个关键字的桶映射函数,这个时间复杂度是O(N ...
随机推荐
- heap与stack的差
本文内容来源于<程序猿面试宝典>第三版. 在进行C/C++编程时.常常将操作的内存分下面几个类别: 栈区(stack):由编译器自己主动分配和释放,存放函数的參数值.局部变量的值等. 其操 ...
- 在浏览器中使用JS打开并展示PDF文件
使用jquery.media.js插件 示例: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=& ...
- php-fpm 日志
1.php-fpm 错误日志 #默认位置 安装目录下的 log/php-fpm.log error_log = log/php-fpm.log #错误级别 alert(必须立即处理), error(错 ...
- linux修改 时间 时区
linux系统修改系统时间与时区 | 浏览:3486 | 更新:2014-06-18 19:36 1 2 3 4 5 6 7 分步阅读 有装过Linux系统的人,可能都会有这样的经历,就是该机器安装w ...
- Linux服务器修改时区时间
时间的一致性很关键,对于日志的分析和程序的对接都至关重要! 01.tzselect 修改时区 可以使用命令 tzselect,修改时区.操作示例: $ tzselect Please identify ...
- 商家 APP 如何接入新版支付宝支付,老版本商家如何升级
代码地址如下:http://www.demodashi.com/demo/14006.html 前言 支付宝移动支付2.0版本对比1.0版本做了较大更新,新申请的商家都需要采用最新2.0版本 SDK ...
- document.body、document.documentElement和window获取视窗大小的差别
来源:http://www.ido321.com/906.html 在w3school关于window对象的介绍中,介绍了获取浏览器窗体大小的三种方法(浏览器的视口,不包含工具栏和滚动栏). 对于In ...
- 原创:微信小程序+WEB使用JS实现注册【60s】倒计时功能
1.效果图: 2.页面仅仅利用了JS的相关功能,包含:wxml.js.wxss 2.1wxml页面代码: <text>绑定手机</text> <form bindsubm ...
- 创业就是和靠谱的人一起做热爱的事 印象笔记CEO谈创业
http://www.nowamagic.net/librarys/news/detail/1502在今年美国知名创业孵化器 Y Combinator 的创业学校大会上,印象笔记(Evernote)的 ...
- 奇葩属性:layout_weight 的解释及使用
在Android的控件布局中,有一个奇葩的 layout_weight 属性,定义如下: layout_weight : 用于指定剩余空闲空间的分割比例.用法: 01 <LinearLayout ...