桶排序——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 ...
随机推荐
- Linux 文件系统的目录定义
目录名称 应放置文件的内容 /boot 开机所需文件——内核,开机菜单及所需配置文件等 /dev 任何设备与接口都以文件形式存放在此目录 /etc 配置文件 /home 用户主目录 /bin 单用户维 ...
- flume的memeryChannel中transactionCapacity和sink的batchsize需要注意事项
一. fluem中出现,transactionCapacity查询一下,得出一下这些: 最近在做flume的实时日志收集,用flume默认的配置后,发现不是完全实时的,于是看了一下,原来是memery ...
- 在centos (linux) 搭建 eclipse c++开发分环境
网上说得很多,很烦,操作了很多,总有错误,但解决方案很简单.步骤就下面几步就OK了 安装gcc .g++ yum install gcc yum install gcc-c++ 安装jdk,配置jdk ...
- [CXF REST标准实战系列] 一、JAXB xml与javaBean的转换(转)
转自:[CXF REST标准实战系列] 一.JAXB xml与javaBean的转换 文章Points: 1.不认识到犯错,然后得到永久的教训. 2.认识JAXB 3.代码实战 1.不认识到犯错,然后 ...
- hdu1695 容斥原理 莫比乌斯反演
给定两个数b,d,问[1,b]和[1,d]区间上有多少对互质的数.(x,y)和(y,x)算一个. 对于[1,b]部分,用欧拉函数直接求.对于大于b的部分,求n在[1,b]上有多少个互质的数,用容斥原理 ...
- Pandas中DataFrame修改列名
Pandas中DataFrame修改列名:使用 rename df = pd.read_csv('I:/Papers/consumer/codeandpaper/TmallData/result01- ...
- Java虚拟机学习 - 对象引用强度 ( 8 )
无论是通过计数算法判断对象的引用数量,还是通过根搜索算法判断对象引用链是否可达,判定对象是否存活都与“引用”相关. 引用主要分为 :强引用(Strong Reference).软引用(Soft Ref ...
- 4.Java基础:Java对象的内存管理机制
1.使用new创建对象,在堆内存分配对象空间.初始化: 2.在方法栈中定义局部变量,吃用对堆内存中对象的引用: 3.方法执行完返回,栈内存自动释放,局部变量销毁: 4.如果堆内存中对象没有变量引用它, ...
- TransactionScope事务处理方法介绍及.NET Core中的注意事项 SQL Server数据库漏洞评估了解一下 预热ASP.NET MVC 的VIEW [AUTOMAPPER]反射自动注册AUTOMAPPER PROFILE
TransactionScope事务处理方法介绍及.NET Core中的注意事项 作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/10170712.ht ...
- activity的onCreate参数 saveInstanceState
写过Android程序的都知道Activity中有一个名称叫onCreate的方法.该方法是在Activity创建时被系统调用,是一个Activity生命周期的开始.可是有一点容易被忽视,就是 ...