一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 习题2.8 随机数组的三种生成算法(补) 将bash的实现翻译成比较纯正的bash风格
来源:互联网 发布:what s up 软件 编辑:程序博客网 时间:2024/06/10 01:12
一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记用(7)习题2.8 随机数组的三种生成算法补 将bash的实现翻译成比较纯正的bash风格
write by 九天雁翎(JTianLing) --blog.csdn.net/vagrxie
<<Data Structures and Algorithm Analysis in C++>>
--《数据结构与算法分析c++描述》 Mark Allen Weiss著 人民邮电大学出版 中文版第49面, 一随机数组的三种生成算法
由于偷懒我最近老是喜欢用bash从C语言(其实好像是csh)中引进的语法,所以感觉都不是那么纯粹的bash风格(但是其实bash的风格我本来就不 喜欢),老是学了不用,有一天写bash都当C语言在写就完了。今天加班比较晚,就不搞什么新内容了,将2.8的bash实现翻译成了比较纯粹的bash 风格。。。。对于没有接触过Bash的人来说更加接近天书了,enjoy it......(I hope you can)
1 #!/usr/bin/env bash
2
3 # just fora range rand....let me die....
4 # what I had said? bash is not agood
5 # languagefor describing algorithms
6 randInt()
7 {
8 local a=$1
9 local b=$2
10
11 if [ "$a" -gt "$b" ]
12 then
13 local temp=$a
14 a=$b
15 b=$temp
16 fi
17
18 local mi=$(($b-$a+1))
19 local r=$((RANDOM%${mi}+${a}))
20 echo -n $r
21 }
22
23 randArr1()
24 {
25 # only oneargument because I hate the
26 # bash'sindirect reference
27 # you canreference the (4) binarySearch to
28 # see what Isaid
29 local n=$1
30 for i in `seq $n`
31 do
32 while true
33 do
34 temp=`randInt 1 $n`
35 j=1
36 while [ "$j" -lt "$i" ]
37 do
38 if [ ${a[j]} -eq "$temp" ]
39 then
40 break
41 fi
42 j=$(($j+1))
43 done
44 if [ "$j" -eq "$i" ]
45 then
46 a[j]=$temp
47 break
48 fi
49 done
50 done
51
52 echo ${a[*]}
53 }
54
55 randArr2()
56 {
57 local n=$1
58 # used for bool array
59 for i in `seq $n`
60 do
61 while true
62 do
63 local temp=`randInt 1 $n`
64 if [ -z ${b[temp]} ]
65 then
66 a[i]=$temp
67 b[temp]=true
68 break
69 fi
70 done
71 done
72
73 echo ${a[*]}
74 }
75
76 randArr3()
77 {
78 local n=$1
79 for i in `seq $n`
80 do
81 a[i]=$i
82 done
83 for i in `seq $n`
84 do
85 local temp=`randInt 1 $n`
86 t=${a[i]}
87 a[i]=${a[temp]}
88 a[temp]=$t
89 done
90
91 echo ${a[*]}
92 }
93
94 # so slow that Ican't bear it run 100 times
95 randArr1 10
96 randArr2 10
97 randArr3 10
98
write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 习题2.8 随机数组的三种生成算法(补) 将bash的实现翻译成比较纯正的bash风格
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(7)习题2.8 随机数组的三种生成算法
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(4)二分搜索算法
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(6)高效率的幂运算
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(2) IntCell类
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(5)欧几里得算法欧几里得算法求最大公约数
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(1) f(x) = 2f(x-1) + x^2
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(3) 最大子序列和问题
- 一个无聊男人的疯狂数据结构学习(绪)
- 数据结构与算法分析 C语言描述 单链表的实现
- 《数据结构与算法分析--C++描述》(第三版)学习笔记系列一:BST的实现
- (数据结构与算法分析 三)------栈的实现(包括链栈和数组实现栈 Java语言描述)
- 由《数据结构与算法分析-C语言描述》开始的数据结构与算法学习之旅
- (数据结构与算法分析 四)------数组循环队列的实现( Java语言描述)
- 一个Delphi写的DES算法, 翻译成C#
- 生成目录结构算法的bash, perl和python实现
- 数据结构与算法分析学习笔记二-栈的C语言实现
- 《数据结构与算法——C语言描述》答案 3.15 自调整表的实现(数组法)
- 我的数码单反相机,艰难的选择!
- linux线程
- 如何获得管理员密码
- [other]Custom URL classloader
- 文件碎片/磁盘碎片的一些知识
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 习题2.8 随机数组的三种生成算法(补) 将bash的实现翻译成比较纯正的bash风格
- Java生成静态页面的简单方法和代码
- C# Tostring() 格式大全 [转]
- 生产者-消费者实例
- "无法找到“XXX.exe”的调试信息,或者调试信息不匹配。未使用调试信息生成二进制文件"的解决方法
- Cocoa中对日期和时间的处理 NSCalendar (二)
- c++学习心得
- JavaScript学习-4
- SQL