私はクイックソート機能のセットを書いて、セグメンテーションフォルト(コアダンプ)を取得しようとしている初心者です。あなたがバグを見つけることができるかどうか確認してください - Quicksortの初心者のエラー
私の再帰的クイックソート機能が- は、実際の作業のほとんどを行うには、パーティション関数を呼び出し、
- 呼び出し自体を再帰的にサブアレイに対処するためのヘルパークイックソート関数を呼び出すことになっている
:
を
私はこれを数時間見て、これを引き起こしているバグを見つけようとしています。どんな助けでも信じられないほど高く評価されます。素晴らしい人間であることを前に感謝します。
[& T構文ATのx86]
.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
私は関数の本体をコメントすることから始めます。たいてい、あなたが*行うことを意味するものを書くことは、あなたが実際に行っていることがどこで違うのかを指摘することができます。 –