Я начинаю пытаться написать набор функций quicksort и получить ошибку сегментации (сбрасывать ядра).Посмотрите, можете ли вы обнаружить ошибку - Ошибка начального пользователя в Quicksort
Моя рекурсивная функция быстрой сортировки должна вызвать функцию помощника QuickSort который
- вызывает функцию раздела, чтобы сделать большую часть реальной работы и
- самих по себе требует, чтобы иметь дело с подмассивами рекурсивны:
Я смотрел на это часами и пытался найти ошибку (-ы), вызывающую это. Любая помощь будет невероятно оценена. Заранее благодарю за то, что вы являетесь удивительным человеком.
[x86 AT & T синтаксис]
.text
.globl quicksort
quicksort:
#subroutine prologue
pushl %ebp #store stack frame of calling function on stack.
movl %esp, %ebp # use current stack pointer for called function
#subroutine main body
movl 8(%ebp), %edi # ptr to array in edi
movl 12(%ebp), %ecx # num elements in ecx
jl quicksort_help # CHECK
ret
quicksort_help:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
movl 16(%ebp), %eax
cmpl 12(%ebp), %eax
jle exit
subl $4, %esp
pushl 16(%ebp)
pushl 12(%ebp)
pushl 8(%ebp)
call partition
addl $16, %esp
movl %eax, -4(%ebp)
subl $4, %esp
movl -4(%ebp), %eax
decl %eax
pushl %eax
pushl 12(%ebp)
pushl 8(%ebp)
call quicksort
addl $16, %esp
subl $4, %esp
pushl 16(%ebp)
movl -4(%ebp), %eax
incl %eax
pushl %eax
pushl 8(%ebp)
call quicksort
addl $16, %esp
exit:
leave
ret
Я бы начал с комментариев тела функции; часто, просто выписывая то, что вы * означаете *, может указать, где то, что вы на самом деле делаете, отличается. –