一、 彙編實現(基於51微控制器)
org 0000h
mov r1,#0ah ;長度送r1
mov r0,#50h ;a=50h
mov a,#0ah ;a=0ah
init0: mov @r0,a ;將a內的值賦給r0指向的位址,(50h)= a
dec a ;a的值自減1
inc r0 ;r0的值自加1,實現指標的向上偏移,r0=51h
djnz r1,init0
pxcx: mov r3,#50h ;r3=50
ql4: mov a,r3 ;指標送a=50h
mov r0,a ;r0=50h
mov r7,#0ah ;長度送r7=0ah
clr 00h ;標誌位=0,用ooh位元組作標誌位
mov a,@r0 ;將r0指向位址的資料取出來,如第一次a=0ah
ql2: inc r0 ;r0的值自加1,如第一次r0=51h
mov r2,a ;r2=a
clr c ;清除標誌位c
mov 22h,@r0 ;(22h)獲取r0指向位址的資料
cjne a,22h,ql3 ;相等嗎?比較兩個資料的值的大小
setb c ;執行到這,說明兩個數值相等
ql3: mov a,r2 ;a=r2
jc ql1 ;大於交換位置, cjne 這個操作會引起c的置位,a<(22h)則
;c=1,兩數已滿足排序要求,跳到下一迴圈即可
setb 00h ;由於a>(22h),說明還有需交換的資料,置標誌位
xch a,@r0 ;進行交換,其中@r0=(22h)
dec r0 ;暫存器指向前一資料
xch a,@r0 ;交換位置
inc r0 ;暫存器指向下一資料
ql1: mov a,@r0 ;a獲取r0指向位址的資料,準備第二次迴圈比較
djnz r7,ql2 ;r7計數器如果不為零,則繼續迴圈比較
jb 00h,ql4 ;當本次迴圈中有交換時,需要再進行一次迴圈比較
sjmp $ ;如果沒有交換發生則退出
end
二、c++語言實現
(1)方法1:
/*數值交換*/
template
void exch(item &a, item &b)
/*數值比較交換*/
template
void compexch(item &a, item &b)}}
(2)方法2:
/*數值比較交換*/
template
void compexch_ex(item &a, item &b, bool flag)
}/*冒泡發排序*/
template
void bubble_ex(item a, int l, int r)
if(false == flag)}}
C C 實現冒泡法排序
file gm bsort.h brief 氣泡排序 author don hao date 2011 8 23 19 55 56 version email hao.limin gmail.com company modification write modifications here.ifnd...
氣泡排序法,cpp實現
首先,從頭開始往後掃瞄整個序列,在掃瞄過程中逐次比較相鄰兩個元素的大小.若相鄰兩個元素中,前面的元素大於後面的元素,則將它們互換,最後整個序列中最大者換到了最後的位置.然後將最大乙個元素除外,用相同的辦法掃瞄其他資料直到整個序列有順序為止.include define len 9 using nam...
冒泡法排序C 實現
看一下 include using namespace std function count the number of count variable void printf int a,int count cout endl void bubblesort int a,int count cout...