【8086アセンブリ】ベースソートのバブルソート
バブルソートは極めて基礎的なソートアルゴリズムであり、C言語、JAVAなどのプログラミング言語を学んだことがあると信じている学生はこれをよく知っている.
バブルソートの原理は配列中の前後の2つを2つずつ比較し、小さいのは前の大きいのは後(あなたも逆にすることができます)、1回のサイクルの後、最大の数は最後まで数えます.
次は最後の最大数を除いて、前の数に対して上記の操作を続けます.
最後の数まで操作を繰り返す
今日は8086アセンブリ言語で、このソートアルゴリズムを見てみましょう.
コードから明らかなように,バブルソートの操作複雑度はO(n^2)であり,これは小規模データの処理に比較的簡便であるが,大規模データの処理となると,対応する時間的コストが非常に高い.
一方、バブルソートは安定したソートアルゴリズムであり、不安定な選択ソート、高速ソートよりも、安定性に要求がある場合は、バブルソートを選択してもよい.
バブルソートの原理は配列中の前後の2つを2つずつ比較し、小さいのは前の大きいのは後(あなたも逆にすることができます)、1回のサイクルの後、最大の数は最後まで数えます.
次は最後の最大数を除いて、前の数に対して上記の操作を続けます.
最後の数まで操作を繰り返す
今日は8086アセンブリ言語で、このソートアルゴリズムを見てみましょう.
DATAS SEGMENT
a dw 19,15,13,14,18,62,14,42,35,68
DATAS ENDS
STACKS SEGMENT
dw 10 dup(0)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
mov ax,DATAS
mov ds,ax
mov cx,10
dec cx; n-1
loop1:
push cx
mov bx,0
loop2:
mov ax,a[bx]
cmp ax,a[bx+2]; , ,
jle continue
xchg ax,a[bx+2]
mov a[bx],ax
continue:
add bx,2; , 2
loop loop2
pop cx
loop loop1
MOV AH,4CH
INT 21H
CODES ENDS
END START
コードから明らかなように,バブルソートの操作複雑度はO(n^2)であり,これは小規模データの処理に比較的簡便であるが,大規模データの処理となると,対応する時間的コストが非常に高い.
一方、バブルソートは安定したソートアルゴリズムであり、不安定な選択ソート、高速ソートよりも、安定性に要求がある場合は、バブルソートを選択してもよい.