我正在尝试使用冒泡排序按降序对列表进行排序,但我遇到了两个问题。首先是下面的代码插入一个 0 作为第一个元素,原因我不明白(我认为这可能是数组的错,但是当不使用这种排序时它不存在,所以我不'不知道它来自哪里。第二个问题是这个实现按升序排序,我不知道如何修复它来做相反的事情。如果我能找出零的事情,可以做一个简单的交换,我假设。我有双重问题,即不擅长使用 MASM,也不擅长用我不太了解的语言实现排序。
代码:
从主调用:
push count ; size of the array
push OFFSET list ; the array
call sortList
程序:
sortList Proc
push ebp
mov ebp, esp
mov ecx,[ebp+12]
mov edx,[ebp+8]
bs_o:
xor ebp,ebp
bs_i:
mov eax,DWORD PTR [edx+ebp*4+4]
cmp DWORD PTR [edx+ebp*4],eax
jb @F
xchg eax,DWORD PTR [edx+ebp*4]
mov DWORD PTR [edx+ebp*4+4],eax
@@:
add ebp,1
cmp ebp,ecx
jb bs_i
loop bs_o
pop ebp
retn 8
任何帮助是极大的赞赏。