davyne*dutchess
06-02-03, 02:06 AM
Group needs help on below assignment:
Add a variable to the below bubble sort procedure that is set to 1 whenever a pair of values is exchanged within the inner loop. use the variable to exit the sort before its normal completion.
extras:
-place values into a table
-run with 50 numbers (random array possibly)
-run comparison drill
;---------------------------------------------------------------------------
BubbleSort PROC USES eax ecx esi'
pArray:PTR DWORD' ; ointer array
Count:DWORD ; rray size
;
'Sort an array of 32-bit signed integers in ascending
;order, using the bubble sort algorithm.
;Receives: pointer to array, array size
;Returns:nothing
;---------------------------------------------------------------------------
mov ecx,Count
dec ecx ; decrement count by 1
L1: push ecx ; save outer loop count
mov esi,pArray ; point to first value
L2: mov eax, [esi] ; get array value
cmp [esi+4],eax ; compare a pair of values
jge L3 ; if [esi] <= [edi], don't exch
xchg eax, [esi+4] ; exchange the pair
mov [esi], eax
L3: add esi, 4 ; move both pointers forward
loop L2 ; inner loop
pop ecx ; retrieve outer loop count
loop L1 ; else repeat outer loop
L4: ret
BubbleSort ENDP
Add a variable to the below bubble sort procedure that is set to 1 whenever a pair of values is exchanged within the inner loop. use the variable to exit the sort before its normal completion.
extras:
-place values into a table
-run with 50 numbers (random array possibly)
-run comparison drill
;---------------------------------------------------------------------------
BubbleSort PROC USES eax ecx esi'
pArray:PTR DWORD' ; ointer array
Count:DWORD ; rray size
;
'Sort an array of 32-bit signed integers in ascending
;order, using the bubble sort algorithm.
;Receives: pointer to array, array size
;Returns:nothing
;---------------------------------------------------------------------------
mov ecx,Count
dec ecx ; decrement count by 1
L1: push ecx ; save outer loop count
mov esi,pArray ; point to first value
L2: mov eax, [esi] ; get array value
cmp [esi+4],eax ; compare a pair of values
jge L3 ; if [esi] <= [edi], don't exch
xchg eax, [esi+4] ; exchange the pair
mov [esi], eax
L3: add esi, 4 ; move both pointers forward
loop L2 ; inner loop
pop ecx ; retrieve outer loop count
loop L1 ; else repeat outer loop
L4: ret
BubbleSort ENDP