[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[原创] 常见几种排序的批处理写法

一、选择排序法
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::选择排序法
  4. echo 共输入10个数
  5. for /l %%i in (1,1,10) do (
  6. set /p a_%%i=请输入%%i个数
  7. set str=!str! !a_%%i!
  8. )
  9. echo %str%
  10. for /l %%i in (1,1,10) do (
  11. set /a b=%%i+1
  12. for /l %%j in (!b!,1,10) do (
  13.    if !a_%%i! gtr !a_%%j! (
  14.       set /a t=a_%%i
  15.       set /a a_%%i=a_%%j
  16.       set /a a_%%j=t
  17.     )
  18. )
  19. )
  20. for /l %%i in (1,1,10) do (
  21. set str1=!str1! !a_%%i!
  22. )
  23. echo %str1%
  24. pause>nul
复制代码
二、冒泡排序法
  1. ::冒泡排序法
  2. @echo off
  3. setlocal enabledelayedexpansion
  4. for /l %%i in (1,1,10) do (
  5. set /p a_%%i=请输入第%%i个数:
  6. set num=!num! !a_%%i!
  7. )
  8. echo %num%
  9. for /l %%i in (1,1,10) do (
  10.    set /a b=10-%%i
  11.    for /l %%j in (1,1,!b!) do (
  12.        set /a t=%%j+1
  13.        set /a d=a_!t!
  14.        if !a_%%j! gtr !d! (
  15.              set /a x=!a_%%j!
  16.              set /a a_%%j=d
  17.              set /a a_!t!=!x!
  18. )
  19. )
  20. )
  21. for /l %%i in (1,1,10) do (
  22. set str=!str! !a_%%i!
  23. )
  24. echo %str%
  25. pause>nul
复制代码
三、后序插入排序法
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%i in (1,1,10) do (
  4. set /p a_%%i=请输入第%%i个数:
  5. set str=!str! !a_%%i!
  6. )
  7. echo 你输入的数列是: !str!
  8. for /l %%i in (1,1,10) do (
  9. rem set /a b=a_%%i
  10. rem echo !b!===
  11. set /a c=%%i+1
  12. for /l %%j in (!c!,1,10) do (
  13.    if !a_%%j! lss !a_%%i! (
  14.    set /a t=!a_%%j!
  15.    set /a a_%%j=!a_%%i!
  16.    set /a a_%%i=!t!
  17. )
  18. )  
  19. )
  20. for /l %%i in (1,1,10) do set stri=!stri! !a_%%i!
  21. echo !stri!
  22. pause>nul
复制代码
四、后序插入排序优化
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%i in (1,1,10) do (
  4. set /p a_%%i=请输入第%%i个数:
  5. set str=!str! !a_%%i!
  6. )
  7. echo 你输入的数列是: !str!
  8. for /l %%i in (1,1,10) do (
  9. set /a p=a_%%i
  10. set /a b=%%i+1
  11. for /l %%j in (!b!,1,10) do (
  12.    if !a_%%j! lss !p!  set /a p=a_%%j&set /a pp=%%j
  13. )  
  14. set /a t=!a_%%i!
  15. set /a a_%%i=!p!
  16. set /a a_!pp!=!t!  
  17. )
  18. for /l %%i in (1,1,10) do set stri=!stri! !a_%%i!
  19. echo !stri!
  20. pause>nul
复制代码
还要四种传统排序,以后再写

[ 本帖最后由 tyc 于 2009-4-17 10:03 编辑 ]
2

评分人数

re batcher

我不屑抄别人的代码。。。。。。。。。。。。。
小学生信息学竞赛必须掌握前三种,后四种是中学生要掌握的
象杨辉三角,约瑟夫问题等是小学生掌握的
n阶魔阵问题是初中生要掌握的
你们版主觉的很历害,其实优秀的初中生,如defansive这样的就会做的
但是中学生的题目我很多是做不出来的

[ 本帖最后由 tyc 于 2009-4-17 15:51 编辑 ]

TOP

rebatcher

你动不动就封人家贴子,动不动就说抄人家的,所以你该被很多人骂!知道为什么?因为你伤人自尊,打击别人的学习积极性!

[ 本帖最后由 tyc 于 2009-4-17 16:27 编辑 ]

TOP

返回列表