直通bat算法
A. bat校招为什么喜欢考算法和数据结构知乎
因为算法和数据结构是软件最重要的基础,好的软件需要好的算法和数据结构,不是用现成的控件或框架一堆就可以的。
B. 批处理bat计算两个时间差
这个是脚本代码[保存为etime.bat放在当前路径下即可:
复制代码
代码如下:
:etime
<begin_time>
<end_time>
<return>
rem
所测试任务的执行时间不超过1天
//
骨瘦如柴版
setlocal&set
be=%~1:%~2&set
cc=(%%d-%%a)*360000+(1%%e-1%%b)*6000+1%%f-1%%c&set
dy=-8640000
for
/f
"delims=:
tokens=1-6"
%%a
in
("%be:.=%")do
endlocal&set/a
%3=%cc%,%3+=%dy%*("%3>>31")&exit/b
计算两个时间点差的函数批处理etime
今天兴趣大法思考了好多bat的问题,以至于通宵
在论坛逛看到有个求时间差的"函数"被打搅调用地方不少(大都是测试代码执行效率的)
复制代码
代码如下:
:time0
::计算时间差(封装)
@echo
off&setlocal&set
/a
n=0&rem
code
随风
@bbs.bathome.cn
for
/f
"tokens=1-8
delims=.:
"
%%a
in
("%~1:%~2")
do
(
set
/a
n+=10%%a%%100*360000+10%%b%%100*6000+10%%c%%100*100+10%%d%%100
set
/a
n-=10%%e%%100*360000+10%%f%%100*6000+10%%g%%100*100+10%%h%%100)
set
/a
s=n/360000,n=n%%360000,f=n/6000,n=n%%6000,m=n/100,n=n%%100
set
"ok=%s%
小时
%f%
分钟
%m%
秒
%n%
毫秒"
endlocal&set
%~3=%ok:-=%&goto
:EOF
这个代码的算法是统一找时间点凌晨0:00:00.00然后计算任何一个时间点到凌晨的时间差(单位跑秒)
然后任意两个时间点求时间差就是他们相对凌晨时间点的时间数的差
对09这样的非法8进制数的处理用到了一些技巧,还有两个时间参数不分先后顺序,可全可点,
但是这个代码一行是可以省去的(既然是常被人掉用自然体积越小越好):
复制代码
代码如下:
@echo
off&setlocal&set/a
n=0&set
"s=+:%~1^&echo
-:%~2"
for
/f
"tokens=1-5
delims=.:"
%%a
in
('echo
%s%')
do
(rem
code
随风
@bbs.bathome.cn
set/a
n%%a=10%%b%%100*360000+10%%c%%100*6000+10%%d%%100*100+10%%e%%100)
set
/a
s=n/360000,n=n%%360000,f=n/6000,n=n%%6000,m=n/100,n=n%%100
set
"ok=%s%
小时
%f%
分钟
%m%
秒
%n%
毫秒"
endlocal&(if
%3.
equ
.
(echo
%ok:-=%)
else
set
%~3=%ok:-=%)&exit/b
再研究下,有更简短的版本
这个代码是我在cn-dos写过的,今天再优化了下更简短
代码的算法深入一层:
用hmsw(各字母代表一个两位数字)表示标准时间
我们记他到凌晨的相对时间数为Tx
Tx=hmsw时间点-0:00:00.00时间点=h*3600*100+m*60*100+100*s+w
hmsw
8位10进制数表示的时间数(单位0.01秒)就是hmsw跑秒
hmsw=w+100*s+10000*m+1000000*h
hmsw-Tx=640000*h+4000*m
所以Tx=hmsw-(640000*h+4000*m)=hmsw-4000*(160*h+m)
那么Tx_2-Tx_1=hmsw_2-hmsw_1-4000*(160*(h_2-h_1)+(m_2-m_1))
对与09这样的非法8进制数我们给他们每个前面加上1就可以保证是十进制数又能保证差值不变
对于非同一天的时间(这种情况较少,除非你在接近0晨时调用)我们把用8640000-去替换负号
再用set/a赋值
就是下面代码用到的算法
Tx_2-Tx_1=hmsw_2-hmsw_1-4000*(160*(1h_2-1h_1)+(1m_2-1m_1))
复制代码
代码如下:
rem
兼容时间点跨天的情行,时间格式00:00:00.00
或者
0:00:00.00
皆可
:_difftime
<Begin_Time>
<End_Time>
[ret]
//返回两个时间点的差值(单位0.01秒)
Setlocal
enabledelayedexpansion&set
b=0%1&set
e=0%2&set
c=1!e:~-11!-1!b:~-11!&set
c=!c::=!
set/a
c=%c:.=%-4000*(160*(1%e:~-11,-9%-1%b:~-11,-9%)+1%e:~-8,-6%-1%b:~-8,-6%)
endlocal
&
(if
%3.==.
(echo
%c:-=8640000-%)
else
set/a
%3=%c:-=8640000-%)&exit/b
给difftime前面加上_是为了表明不是临时写的子过程也为了以后连接库函数标签的唯一性
//
题外话:
对于子过程,若启用了变量延迟,原则上三行都可以写完,尽量写紧凑些(因为没人读),但是对于算法,
思路性的东西要能舍得笔墨,越详细越好,我发现即使你的代码写得再好,不会有人全搬,都会小修改,
你自己初写代码时不可能考虑到所有人使用的具体情况,自然没人愿意很详细看你的代码,倒是你的思路为
别人提供了一个方法,在此意义上函数库的作用起到方法库的作用
C. 百度知道批处理高手,求一Bat批处理高级算法,查找最大10个文件.
算法类似于对一组指定的数字从大到小进行排序.
但是写好后却受到bat的种种制约,如set的限制无法计算2^31以上的数字(2G以上),延迟环境变量造成语句混乱,for命令先天的不足....所以先用bat写好,又用autohotkey脚本重新打包了下.以备后患.
-----------
批处理脚本
@echooff
set/aNum=10
setSearchPath=%windir:~0,2%
for/l%%iin(1,1,%Num%)do(
set/aMaxSize[%%i]=0
set/aMaxFile[%%i]=NULL
)
for/f"delims="%%jin('dir%SearchPath%/a-d/b/s')do(
cls&echo当前路径:%%~pj
set/aCurrFileSize=%%~zj
set/aerror=2
for/l%%kin(1,1,%Num%)do(
if!error!==2(
If!CurrFileSize!GTR!MaxSize[%%k]!(
setLastMax=%Num%
set/aCurrMax=%Num%-1
set/aindex=%Num%-%%k
for/l%%kin(1,1,!index!)do(
set/aMaxSize[!LastMax!]=MaxSize[!CurrMax!]
callsetMaxFile[%%LastMax%%]=%%MaxFile[!CurrMax!]%%
set/aLastMax-=1
set/aCurrMax-=1
)
set/aMaxSize[%%k]=!CurrFileSize!
setMaxFile[%%k]=%%~j
set/aerror=1
)
)
)
)
cls&for/l%%lin(1,1,%Num%)do(
echo%%l.文件:!MaxFile[%%l]!大小:!MaxSize[%%l]!字节
)
echoOK&pause>Nul
--------------------------
autohotkey脚本
代码太长暂不给出了.
如果需要,保存下面图片,选择用winrar打开,就可以看到打包后的单个exe文件了,拖出来执行,执行效率相对bat快很多.
D. 如果本科已经能拿到BAT算法offer,是否还有必要读研
所需时间
国内:学制2-3年,以3年居多。
国外:国外研究生学制一般是1-2年,对大多数读硕士学位的学生来说,1-2年课程设置非常紧凑丰富,没有任何时间上的浪费。能早 1-2年就业,无疑将比同龄人领先一步。
成功难度
国内:一般考生从大三开始专注于考研考前准备,有些学生则一入校就开始做准备了。虽然硕士研究生的全国录取人数已经从1999年的 6.5万人增加到2010年的46万人,可是报考人数也由 1999年的31.90万人增加到了2010年的140万人,录取率在30%左右。虽然目前复试权重在逐渐加大,不过笔试分数依然是必过的第一关,依然是“一考定终身”的模式。
国外:国外读研一般都是申请制,只要具备本科学位,都可以申请。对语言要求很明确,英语系国家至少要有雅思、托福、GRE成绩,去小语种国家也有考级要求,或者必须要读够一定学时的语言,具备这个国家的语言基础。如果没有语言成绩,就需要到国外读半年到一年的语言,这项花费不菲。海外大学比较注重本科阶段的平均成绩,一般好一点的国外大学要求中国重点大学学生的平均绩点是 3.0,也就是平均每门功课的成绩是80分以上,非重点大学的学生的绩点是 3.5以上,也就是平均成绩在88分以上。
四、职业竞争力
国内:近几年,研究生也出现就业难的情况。用人单位已经越来越理智,能用高职生的绝不用本科生,能用本科生的绝不用硕士生。
国外:金融危机导致失业率攀升的情况正在成为过去,同时,为吸引人才,目前很多国家放宽了移民政策。比如现在在德国毕业工作3年就可以申请长期居住、工作5年就可以申请移民;英国也放宽了留学生工作签证的时间,由1年增加到2年,工作满5年也可以申请移民。
E. BAT代码,怎么把变量跟冒泡排序算法联系起来呢
在第四行后面插入两行即可。
@echo off
setlocal enabledelayedexpansion
for /l %%i in (1,1,10) do (
set /p a_%%i=请输入第%%i个数:
set /a c+=10
set a_%%i=!a_%%i!/!c!
F. 各位面过BAT的同学,你们有没有被考过KMP算法
三家都面过,也许是我运气好,没有碰到过。其实KMP算法效率不是很高,理解起来也不容易。如果面试官跟你聊字符串匹配算法,你完全可以说点其他算法装逼。给你一个网页,希望能帮助到你。4795369请采纳最佳答案~
G. 如何将BAT文件进行加密
给电脑上的文件加密或者文件夹加密,你可以使用超级加密3000。
超级加密3000采用国际上成熟的加密算法和安全快速的加密方法,可以有效保障数据安全!
具体操作方法:
1 下载安装超级加密3000。
2 然后在需要加密的文件上单击鼠标右键选择加密。
3 在弹出的文件加密窗口中设置文件加密密码就OK了。
超级加密3000的下载地址你可以在网络上搜索超级加密3000,第一个就是。
H. BAT 前端工程师面试对算法一般有怎样的要求
一般BAT招聘人才有社招和校招的区分,考究算法的方式也都不同。
这种源于知识的内在求之动机,在很长一段时间里是宝贵的。
I. JVM有哪些垃圾回收算法
标记-清除,标记-复制,标记-整理