您好!欢迎光临工博士商城

库卡KUKA机器人代理商

产品:144    
联系我们
您当前的位置:首页 » 行业资讯 » KUKA(库卡)机器人——库卡机器人编程之数组冒泡排序
产品分类
行业资讯
KUKA(库卡)机器人——库卡机器人编程之数组冒泡排序
发布时间:2022-10-19        浏览次数:140        返回列表

一、冒泡排序由来

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。

它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡***终会上浮到顶端一样,故名“冒泡排序”。

二、KRL实现冒泡排序

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
DEF SortArray(Array[]:OUT,nzEnd:IN,nzDir:IN );***************************************************;* Customer     :                                  *;* Roboter      :                                  *;* Version      : Vxxxxxx                          *;* Roboter Nr.  : xxxxxx                           *;* Controller Nr: xxxxxx                           *;* Autor        : Andrew Wang                      *;* Company      :                                  *;* Department   :                                  *;* Telephone    : 86 000-0000-0000                 *;* Version      : 1.0                              *;* Created      : 12.12.2018                       *;* Modified     :                                  *;* Project      :                                  *;* Program Name : SortArray                        *;* Sort an array as a certain direction;           *;************************************************** DECL REAL Array[]DECL REAL nrTempDECL INT nzIDECL INT nzEndDECL INT nzIdxDECL INT nzDirCONTINUEIF VARSTATE("Array[]")<>#INITIALIZED THEN   MsgQuit(" The sorting Array not initialized!")   HALT ENDIFCONTINUEIF VARSTATE("nzEnd")<>#INITIALIZED THEN   MsgQuit(" The sorting End index not initialized!")   HALT ENDIFCONTINUEIF VARSTATE("nzDir")<>#INITIALIZED THEN   MsgQuit(" The sorting direction not initialized!")   HALT ENDIF
FOR nzI= 1 TO nzEnd IF (nzDir<=0) THEN nzIdx= IdxMin(Array[],nzI,nzEnd) ENDIF IF (nzDir>0) THEN nzIdx= IdxMax(Array[],nzI,nzEnd) ENDIF nrTemp =Array[nzI] Array[nzI] =Array[nzIdx] Array[nzIdx] =nrTempENDFOREND

三、应用

1.找出数组中***大数的索引

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
DEFFCT INT IdxMax(Array[]:OUT,nzStart:IN,nzEnd:IN );***************************************************;* Customer     :                                  *;* Roboter      :                                  *;* Version      : Vxxxxxx                          *;* Roboter Nr.  : xxxxxx                           *;* Controller Nr: xxxxxx                           *;* Autor        : Andrew Wang                      *;* Company      :                                  *;* Department   :                                  *;* Telephone    : 86 000-0000-0000                 *;* Version      : 1.0                              *;* Created      : 12.12.2018                       *;* Modified     :                                  *;* Project      :                                  *;* Program Name : IdxMax                           *;* Return the index of the highest value of Array; *;************************************************** DECL INT nzStartDECL INT nzEndDECL INT nzIdxDECL INT nzIdxMaxDECL REAL Array[]CONTINUEIF VARSTATE("nzStart")<>#INITIALIZED THEN   MsgQuit(" The sorting start index not initialized!")   HALT  ELSE   IF nzStart <1 THEN      MsgQuit(" The sorting start index invalid:>=1!")      HALT    ENDIFENDIFCONTINUEIF VARSTATE("nzEnd")<>#INITIALIZED THEN   MsgQuit(" The sorting end index not initialized!")   HALT  ELSE    IF (nzEnd < 1) OR (nzEnd <nzStart) THEN      MsgQuit(" The sorting End index invalid!")      HALT    ENDIFENDIFCONTINUEIF VARSTATE("Array[]")<>#INITIALIZED THEN   MsgQuit(" The sorting Array not initialized!")   HALT ENDIFnzIdxMax=nzStartFOR nzIdx=(nzStart+1) TO nzEnd  IF Array[nzIdx] > Array[nzIdxMax] THEN     nzIdxMax=nzIdx  ENDIFENDFORRETURN (nzIdxMax)ENDFCT

2.找出数组中***小数的索引

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
DEFFCT INT IdxMin(Array[]:OUT,nzStart:IN,nzEnd:IN );***************************************************;* Customer     :                                  *;* Roboter      :                                  *;* Version      : Vxxxxxx                          *;* Roboter Nr.  : xxxxxx                           *;* Controller Nr: xxxxxx                           *;* Autor        : Andrew Wang                      *;* Company      :                                  *;* Department   :                                  *;* Telephone    : 86 000-0000-0000                 *;* Version      : 1.0                              *;* Created      : 12.12.2018                       *;* Modified     :                                  *;* Project      :                                  *;* Program Name : IdxMin                           *;* Return the index of the lowest value of Array;  *;************************************************** DECL INT nzStartDECL INT nzEndDECL INT nzIdxDECL INT nzIdxMinDECL REAL Array[]CONTINUEIF VARSTATE("nzStart")<>#INITIALIZED THEN   MsgQuit(" The sorting start index not initialized!")   HALT  ELSE   IF nzStart <1 THEN      MsgQuit(" The sorting start index invalid:>=1!")      HALT    ENDIFENDIFCONTINUEIF VARSTATE("nzEnd")<>#INITIALIZED THEN   MsgQuit(" The sorting end index not initialized!")   HALT  ELSE    IF (nzEnd < 1) OR (nzEnd <nzStart) THEN      MsgQuit(" The sorting End index invalid!")      HALT    ENDIFENDIFCONTINUEIF VARSTATE("Array[]")<>#INITIALIZED THEN   MsgQuit(" The sorting Array not initialized!")   HALT ENDIFnzIdxMin=nzStartFOR nzIdx=nzStart+1 TO nzEnd  IF Array[nzIdx] < Array[nzIdxMin] THEN     nzIdxMin=nzIdx  ENDIFENDFORRETURN (nzIdxMin)ENDFCT
了解更多产品相关信息请关注:库卡KUKA机器人一级代理商

分享到: 


 

联系热线:15000779856   联系人:庞经理 联系地址:上海市嘉定区南翔镇众仁路399号B座20楼

技术和报价服务:星期一至星期六8:00-22:00 库卡KUKA机器人代理商