PDMS二次开发软件

 找回密码
 注册 有问题进QQ群591484440

QQ登录

只需一步,快速开始

查看: 1280|回复: 4

[开发乐趣] PML数组冒泡排序法

  [复制链接]

签到天数: 12 天

[LV.3]瞎扑签到3级

新手上路

积分
241
发表于 2013-10-4 20:18:53 | 显示全部楼层 |阅读模式
在写PML程序中用到比较复杂数组的排序,但是大概找了下帮助没有我想要的,就看了下之前的C#里面写过的冒泡排序,在PML中也写了下,有点意思

  1. <P>--PML数组冒泡排序法
  2. --09:07:40 PM, October 02, 2013, COSCO Shipyard_LiYuan.
  3. !nums = array()
  4. !nums.append(2)
  5. !nums.append(12)
  6. !nums.append(14)
  7. !nums.append(14)
  8. !nums.append(20)
  9. !nums.append(1)
  10. !nums.append(50)
  11. !nums.append(99)
  12. !nums.append(8)
  13. !nums.append(30)</P>
  14. <P>do !a to !nums.size()
  15.    do !b to (!nums.size() - !a)
  16.          if (!nums[!b] gt !nums[!b + 1]) then $* //升序排列, if (!nums[!b] lt !nums[!b + 1]) then //降序排列
  17.               !temp = !nums[!b]
  18.               !nums[!b] = !nums[!b + 1]
  19.               !nums[!b + 1] = !temp
  20.           endif
  21.    enddo
  22. enddo</P>
  23. <P>q var!nums </P>
复制代码
C#中简单的冒泡
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;

  5. namespace Lx_array
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. ShowUI();
  12. int k = 1;
  13. int[] nums = new int[10];
  14. for (int i = 0; i <nums.Length; i++)
  15. {
  16. try
  17. {
  18. Console.Write("请输入第{0}/{1}个数字: ", i + 1,nums.Length);
  19. nums[i] = Convert.ToInt32(Console.ReadLine());
  20. }
  21. catch
  22. {
  23. if (k < 3)
  24. {
  25. Console.WriteLine("输入的数据不合法, 请重新输入!");
  26. i--;
  27. k++;
  28. }
  29. else
  30. {
  31. Console.WriteLine("超过最大输入次数!");
  32. goto Finish;
  33. }
  34. }
  35. }

  36. for (int n = 0; n <nums.Length; n++)
  37. {
  38. Console.WriteLine("第{0}/{1}个数字:{2} ", n + 1, nums.Length, nums[n]);
  39. }

  40. //数组元素冒泡排序
  41. for (int g = 0; g < nums.Length - 1; g++)
  42. {
  43. for (int j = 0; j < nums.Length -g- 1; j++)
  44. {
  45. if (nums[j] < nums[j + 1])
  46. {
  47. int temp = nums[j];
  48. nums[j] = nums[j + 1];
  49. nums[j + 1] = temp;
  50. }
  51. }
  52. }
  53. for (int ii = 0; ii < nums.Length; ii++)
  54. {
  55. if (ii < nums.Length-1)
  56. {
  57. Console.Write("{0} > ", nums[ii]);
  58. }
  59. else
  60. {
  61. Console.Write(nums[ii]);
  62. }
  63. }

  64. Finish:
  65. Console.ReadKey();
  66. ShowUI();
  67. Console.ReadKey();
  68. }
  69. /// <summary>
  70. /// 显示软件主界面的方法
  71. /// </summary>
  72. public static void ShowUI()
  73. {
  74. Console.Clear();
  75. Console.WriteLine("**********************************************");
  76. Console.WriteLine("** 冒泡排序 **");
  77. Console.WriteLine("**********************************************");
  78. Console.WriteLine("按任意键退出!");
  79. //Console.ReadKey();
  80. }
  81. }
  82. }
复制代码
今天很开心!

签到天数: 10 天

[LV.3]瞎扑签到3级

新手上路

积分
193
发表于 2014-6-20 16:00:56 | 显示全部楼层
PML的数组排序用Sort方法就可以了吧。
!nums.sort()
好累啊
回复 支持 反对

使用道具 举报

签到天数: 33 天

[LV.5]瞎扑签到5级

中级会员

积分
592
发表于 2015-8-21 23:46:55 | 显示全部楼层
支持下
回复 支持 反对

使用道具 举报

签到天数: 12 天

[LV.3]瞎扑签到3级

新手上路

积分
241
 楼主| 发表于 2015-12-18 23:42:25 | 显示全部楼层
本帖最后由 leorico 于 2015-12-18 23:43 编辑

[mw_shl_code=applescript,true]do !a to !ncorrectname.size()
        do !b to (!ncorrectname.size() - !a)
                if (!ncorrectname[!b][1] gt !ncorrectname[!b + 1][1]) then
                        !tempa = !ncorrectname[!b][1]
                        !tempb = !ncorrectname[!b][2]
                        !ncorrectname[!b][1] = !ncorrectname[!b + 1][1]
                        !ncorrectname[!b][2] = !ncorrectname[!b + 1][2]
                        !ncorrectname[!b + 1][1] = !tempa
                        !ncorrectname[!b + 1][2] = !tempb
                endif
        enddo
enddo[/mw_shl_code]
回复 支持 反对

使用道具 举报

签到天数: 7 天

[LV.3]瞎扑签到3级

新手上路

积分
137
发表于 2016-7-26 22:21:09 | 显示全部楼层
放着sort()不用,浪费生命,还这么嘚瑟。。。
论坛也解决不了
回复 支持 1 反对 0

使用道具 举报

本版积分规则

QQ|手机版|关于我们|Archiver|手机版|小黑屋|工程G3D ( 鄂ICP备16022302号-2 )

GMT+8, 2024-11-23 15:08 , Processed in 0.062503 second(s), 29 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表