ไม่เข้าใจอัลกอริทึมนี้ครับ รบกวนช่วยที

บอกไว้ก่อนนะครับว่านี่ไม่ใช่อัลกอริทึม Quicksort แต่ผมอยากหา "จำนวนลำดับที่ k ที่น้อยที่สุด" ใน unsorted int array โดยไม่ต้อง Sort

น่ะครับ อาจารย์เขาบอกให้ implement โดยใช้ Quicksort (ซึ่งผมเขียนไปแล้ว) แต่พอมาทำอันนี้ output มันไม่ถูก เลยอยากให้ช่วย

ดูโค้ดให้หน่อยครับ ตามนี้ครับ

[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้

โค้ดนี้ดูจะไม่มีปัญหาเวลารันกับ Input ที่ n น้อยๆครับ แต่ถ้าเกิน 8 ขึ้นไปมั้งมันจะเริ่มมั่วๆแล้วครับ อย่างของผม Input เป็น

10
1 7 13 5 4 9 10 6 2 8

ได้ Output เป็น

[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้

ซึ่ง 2 หายไปไหนก็ไม่รู้ครับ = =" แล้วก็มีบางตัวซ้ำกัน น่าแปลกที่ตัวเลขมันค่อนข้างจะเรียงกัน แต่ทำไมไม่ถูกนะ

รบกวนช่วยหา bug ให้หน่อยครับ หาไม่เจอจริงๆ

ป.ล. ถ้าก๊อบโค้ดข้างบนไปใส่ codeblock จะรันผ่านแน่ๆครับ แต่Dev-C ผมไม่ได้ลองนะ

Edit : แย่แหะ มันพิมพ์ [ i ] ไม่ได้ถ้า i ติดอยู่กับวงเล็บ รบกวนเติมด้วยนะครับ
         ตรง do{i++;}while(a<p); กับ scanf("%d",&a); กับ swap(&a,&a[j]); เป็น a[ i ] นะไม่ใช่ a เฉยๆ

ป.ล.2 ใครรู้วิธี disable พวก โค้ดตัวหนา ตัวเอียง ตัวขีดเส้นใต้ อะไรงี้ ตอนโพสบ้างไหมครับ ไม่งั้นมันจะเป็นปัญหามากๆเวลาจะโพสโค้ดภาษา c
แก้ไขข้อความเมื่อ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่