วิธีการจัดเรียงอาร์เรย์ด้วย qsort() ใน C

Withi Kar Cad Reiyng Xarrey Dwy Qsort Ni C



การเรียงลำดับเป็นการดำเนินการพื้นฐานในการเขียนโปรแกรมคอมพิวเตอร์ และเกี่ยวข้องกับการจัดเรียงชุดข้อมูลตามลำดับเฉพาะ วิธีหนึ่งในการจัดเรียงอาร์เรย์ขององค์ประกอบในภาษาซีคือการใช้ qsort() ฟังก์ชันซึ่งเป็นส่วนหนึ่งของไลบรารีมาตรฐาน ฟังก์ชันนี้ใช้อาร์เรย์ ขนาด และฟังก์ชันการเปรียบเทียบเป็นอาร์กิวเมนต์ และจัดเรียงอาร์เรย์จากน้อยไปหามากตามค่าเริ่มต้น

แนวทางนี้แสดงการเรียงลำดับอาร์เรย์โดยใช้ qsort() ฟังก์ชันในภาษา C และยังช่วยให้คุณเข้าใจได้ด้วยโค้ดตัวอย่างภาษา C

qsort() ใน C

C ห้องสมุดมาตรฐานอำนวยความสะดวกให้เราด้วย qsort() ฟังก์ชันที่ใช้ในการจัดเรียงอาร์เรย์ เป็นฟังก์ชันที่ได้รับการปรับให้เหมาะสมที่สุดและรวดเร็วซึ่งสามารถทำงานกับอาร์เรย์ประเภทข้อมูลใดก็ได้







ส่วนหัวของไฟล์โดยใช้ qsort() ใน C

เดอะ qsort() วิธีการถูกกำหนดไว้ใน stdlib.h ไฟล์ส่วนหัวซึ่งต้องกำหนดก่อนดำเนินการ qsort() ในโปรแกรมภาษาซี



#รวม

การประกาศของ qsort()

คำประกาศของ qsort() ฟังก์ชั่นมีดังนี้:



เป็นโมฆะ qsort ( เป็นโมฆะ * ฐาน , number_of_elements , size_of_element , การเปรียบเทียบ_ฟังก์ชัน )

พารามิเตอร์ของฟังก์ชัน qsort()

พารามิเตอร์ของ qsort() ฟังก์ชั่นคือ:





ฐาน: ชี้ไปที่องค์ประกอบแรกของอาร์เรย์ที่จะจัดเรียง

number_of_elements: จำนวนองค์ประกอบในอาร์เรย์ที่จะจัดเรียง



size_of_element: ขนาดเป็นไบต์ของแต่ละองค์ประกอบในอาร์เรย์

การเปรียบเทียบ _ ฟังก์ชัน: ชี้ไปที่ฟังก์ชันการเปรียบเทียบที่กำหนดลำดับขององค์ประกอบ

ฟังก์ชันการเปรียบเทียบใน qsort() คืออะไร

ฟังก์ชันการเปรียบเทียบใช้พารามิเตอร์สองตัว ซึ่งเป็นประเภท const void* ทั้งคู่ ซึ่งชี้ไปที่องค์ประกอบที่กำลังเปรียบเทียบ ฟังก์ชันควรส่งคืนจำนวนเต็มน้อยกว่า เท่ากับ หรือมากกว่า 0 ขึ้นอยู่กับว่าควรจัดเรียงองค์ประกอบแรกก่อน ตำแหน่งเดียวกัน หรือหลังองค์ประกอบที่สองตามลำดับ

qsort ทำงานอย่างไรใน C

เดอะ qsort() ฟังก์ชันทำงานในลักษณะต่อไปนี้:

บันทึก: ที่นี่เรากำลังพิจารณา int arr[] = {5, 2, 8, 3, 1, 9};

1: ในขั้นต้น ฟังก์ชัน qsort จะถูกเรียกใช้ด้วยพารามิเตอร์ต่อไปนี้:

qsort ( อร๊าย , 6 , ขนาดของ ( นานาชาติ ) , การเปรียบเทียบ_ฟังก์ชัน ) ;

โดยที่ arr คือตัวชี้ไปยังอาร์เรย์ 6 คือจำนวนองค์ประกอบในอาร์เรย์ sizeof(int) คือขนาดของแต่ละองค์ประกอบในอาร์เรย์ และ comparison_function คือฟังก์ชันที่กำหนดลำดับการจัดเรียงองค์ประกอบ

2: ฟังก์ชัน qsort เลือกองค์ประกอบเดือย สมมติว่าเลือก 3 เป็นเดือย

3: ฟังก์ชัน qsort แบ่งอาร์เรย์ออกเป็นสองอาร์เรย์ย่อย: {2, 1} และ {5, 8, 9} อาร์เรย์ย่อยแรกประกอบด้วยองค์ประกอบที่น้อยกว่าหรือเท่ากับเดือย และอาร์เรย์ย่อยที่สองมีองค์ประกอบที่มากกว่าเดือย

4: ฟังก์ชัน qsort เรียกใช้ตัวเองซ้ำในแต่ละอาร์เรย์ย่อย

5: ฟังก์ชัน qsort เลือก pivots สำหรับแต่ละอาร์เรย์ย่อย สมมติว่าเลือก 1 และ 8 เป็นเดือย

6: ฟังก์ชัน qsort แบ่งพาร์ติชันแต่ละอาร์เรย์ย่อยออกเป็นสองอาร์เรย์ย่อย และเรียกใช้ตัวเองซ้ำในแต่ละอาร์เรย์ย่อยเหล่านี้

7: ฟังก์ชัน qsort จะรวมอาร์เรย์ย่อยที่เรียงลำดับกลับเป็นอาร์เรย์ที่จัดเรียงรายการเดียว: {1, 2} และ {5, 8, 9} กลายเป็น {1, 2, 5, 8, 9}

8: อาร์เรย์ที่เรียงลำดับทั้งหมดจะถูกส่งกลับ

การใช้ qsort ในการเขียนโปรแกรม C

รหัสต่อไปนี้แสดงการใช้งานของ qsort ฟังก์ชันในการเขียนโปรแกรมภาษาซี

#รวม

#รวม

นานาชาติ เปรียบเทียบ ( คอสต์ เป็นโมฆะ * ก1 , คอสต์ เป็นโมฆะ * ข1 )

{

กลับ ( * ( นานาชาติ * ) ก1 - * ( นานาชาติ * ) ข1 ) ;

}

นานาชาติ หลัก ( )

{

นานาชาติ ฉัน = 0 , ในหนึ่ง = 6 ;

นานาชาติ อาร์เรย์ [ ] = { 5 , 2 , 8 , 3 , 1 , 9 } ;

qsort ( อาร์เรย์ , ในหนึ่ง , ขนาดของ ( นานาชาติ ) , เปรียบเทียบ ) ;

พิมพ์ฉ ( 'องค์ประกอบที่เรียงลำดับของอาร์เรย์โดยใช้ qsort() คือ: ' ) ;

สำหรับ ( ฉัน = 0 ; ฉัน < ในหนึ่ง ; ฉัน ++ ) {

พิมพ์ฉ ( '%d' , อาร์เรย์ [ ฉัน ] ) ; }

กลับ 0 ;

}

ในโค้ดข้างต้น ขั้นแรกให้สร้างฟังก์ชันการเปรียบเทียบด้วยพารามิเตอร์สองตัว ก1 และ ข1 . จากนั้นการดำเนินการจะเริ่มต้นจาก main() ในหลัก เราเริ่มต้นตัวแปรจำนวนเต็มสองตัวเป็น i=0 และ num=6 จากนั้นเราจะประกาศอาร์เรย์ที่มีองค์ประกอบ 6 รายการเป็น {5, 2, 8, 3, 1, 9} . หลังจากนี้ qsort() มีสามพารามิเตอร์ของประเภทอาร์เรย์ พารามิเตอร์ num บอกองค์ประกอบทั้งหมดของอาร์เรย์ ขนาดของ(int) หมายถึงขนาดรวมของอาร์เรย์ และการเปรียบเทียบใช้เพื่อเปรียบเทียบองค์ประกอบอาร์เรย์ทีละรายการ จากนั้นพิมพ์อาร์เรย์ที่เรียงลำดับโดยใช้ พิมพ์f() ฟังก์ชันในภาษาซี

เอาต์พุต

บทสรุป

qsort เป็นฟังก์ชันที่มีประสิทธิภาพในการเขียนโปรแกรมภาษาซีสำหรับการเรียงลำดับอาร์เรย์ทุกประเภท ใช้อัลกอริทึม Quicksort เพื่อเรียงลำดับองค์ประกอบจากน้อยไปหามากหรือมากไปหาน้อยตามฟังก์ชันการเปรียบเทียบ คำแนะนำข้างต้นแสดงวิธีง่ายๆ ในการใช้ qsort ในการเขียนโปรแกรม C ด้วยการทำงานทีละขั้นตอนของ qsort อัลกอริทึม