《冒泡程序流程图》由会员分享,可在线阅读,更多相关《冒泡程序流程图(2页珍藏版)》请在金锄头文库上搜索。
1、开 始本轮交换次数为零?从数据区起始端开始相邻两个数据符合增序要求?置位交换标志交换两个数据本轮交换次数用完否?本轮发生过交换否?初始化交换次数为元素个数交换标志初始化,交换次数比上一轮减少一次结 束YYNNYYNN冒泡排序算法流程图DAT EQU 30H ;排序数据首址N EQU 8 ;数据个数BUBSORT: MOV R4, #N ;初始化一轮冒泡操作中的比较次数SRT1: CLR F0 ;在一轮冒泡操作前,初始化交换标志 MOV A,R4 ;取上一轮冒泡操作中比较次数 DEC A ;减少一次 MOV R4,A ;作为本轮冒泡操作中的比较次数 MOV R2,A ;控制本轮比较次数 JZ S
2、RT4 ; 比较次数为零,排序结束 MOV R0,#DAT ;取数据区首址SRT2: MOV A,R0 ;读取一个数据 MOV R3,A ;暂存 INC R0 ;指向后一个数据 MOV A,R0 ;读取 CLR C SUBB A, R3 ;和前一个数据比较 JNC SRT3 ;不小于前一个数据,符合增序要求 SETB F0 ;小于前一个数据,设置交换标志 MOV A, R3 ;交换两个数据(冒泡) XCH A, R0 DEC R0 ;指向前一个数据 XCH A, R0 INC R0 ;恢复指针,指向后一个数据SRT3: DJNZ R2,SRT2 ;处理完这一轮 JB F0, SRT1 ;此轮如发生交换,需进行下一轮操作SRT4: RET ;排序结束