วิธีใช้ฟังก์ชัน stable_sort() ใน C++

Withi Chi Fangkchan Stable Sort Ni C



มีฟังก์ชันต่างๆ ใน ​​C++ เพื่อจัดเรียงองค์ประกอบของลำดับตามลำดับเฉพาะ คล้ายกับฟังก์ชันการเรียงลำดับ จะใช้ stable_sort เพื่อจัดเรียงองค์ประกอบในช่วง (ตัวแรก ตัวสุดท้าย) ความแตกต่างที่สำคัญระหว่างพวกเขาก็คือ เสถียร_เรียงลำดับ รักษาลำดับสัมพัทธ์ขององค์ประกอบที่มีค่าเท่ากัน

ในบทช่วยสอนรายละเอียดนี้ เราจะแสดงการทำงานของ เสถียร_เรียงลำดับ() ใน C++

วิธีใช้ฟังก์ชัน stable_sort() ใน C++

ใน C++, เสถียร_เรียงลำดับ() เป็นอัลกอริธึมไลบรารีมาตรฐานที่จัดเรียงองค์ประกอบตามลำดับที่เพิ่มขึ้นและคงลำดับเดิมสำหรับองค์ประกอบที่เทียบเท่า ซึ่งหมายความว่าหากองค์ประกอบทั้งสองเท่ากัน องค์ประกอบที่ปรากฏก่อนในคอนเทนเนอร์ก่อนการจัดเรียงจะยังคงปรากฏเป็นอันดับแรกในรายการที่จัดเรียง ฟังก์ชันนี้ทำงานโดยแบ่งคอนเทนเนอร์ซ้ำๆ (อาร์เรย์ เวกเตอร์ รายการที่เชื่อมโยง) จัดเรียงแยกกัน แล้วรวมเข้าด้วยกันเพื่อให้ได้คอนเทนเนอร์ที่จัดเรียง มันมาภายใต้ <อัลกอริทึม> ไฟล์ส่วนหัว







ไวยากรณ์ทั่วไปสำหรับการใช้ เสถียร_เรียงลำดับ() ใน C ++ คือ:



เสถียร_เรียงลำดับ ( RandomAccessIterator ก่อน , RandomAccessIterator ล่าสุด ) ;

ที่นี่ อันดับแรก เป็นตัววนซ้ำที่ชี้ไปยังองค์ประกอบแรกในช่วงที่จะจัดเรียง และ ล่าสุด เป็นตัววนซ้ำที่ชี้ไปที่องค์ประกอบหลังจากองค์ประกอบสุดท้ายในช่วงที่จะจัดเรียง



เดอะ เสถียร_เรียงลำดับ() ฟังก์ชันใช้ลำดับที่ไม่ลดลงเพื่อจัดเรียงรายการในช่วง [ตัวแรก ตัวสุดท้าย] เช่น จากองค์ประกอบที่เล็กที่สุดไปยังองค์ประกอบที่ใหญ่ที่สุด ฟังก์ชันโดยค่าเริ่มต้นจะเปรียบเทียบรายการผ่าน ตัวดำเนินการน้อยกว่า (<)





ตัวอย่างที่ 1

พิจารณาโค้ดตัวอย่างด้านล่าง ในโค้ดนี้ เราได้สร้าง รายการเวกเตอร์ และเริ่มต้นด้วยค่าบางอย่าง ต่อไปเราใช้ เสถียร_เรียงลำดับ() เพื่อเรียงลำดับค่าของเวกเตอร์ที่กำหนดจากน้อยไปหามาก เวกเตอร์ที่ไม่เรียงลำดับและเรียงลำดับจะถูกพิมพ์บนคอนโซลโดยใช้ลูปตามช่วง

#รวมถึง

#รวม <เวกเตอร์>

#include <อัลกอริทึม>

ใช้เนมสเปซมาตรฐาน ;



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

{

เวกเตอร์ < นานาชาติ > รายการ = { 5 , 2 , 25 , 4 , 9 , 33 , 38 , 26 } ;

ศาล << 'ตัวเลขก่อนจัดเรียง: ' ;

แต่ละ ( รายการ. เริ่ม ( ) , รายการ. จบ ( ) , [ ] ( นานาชาติ x ) {

ศาล << x << ' ' ;

} ) ;

เสถียร_เรียงลำดับ ( รายการ. เริ่ม ( ) , รายการ. จบ ( ) ) ;

ศาล << ' \n ตัวเลขหลังจากจัดเรียง: ' ;

แต่ละ ( รายการ. เริ่ม ( ) , รายการ. จบ ( ) , [ ] ( นานาชาติ x ) {

ศาล << x << ' ' ;

} ) ;



กลับ 0 ;

}




ตัวอย่างที่ 2

ในตัวอย่างด้านล่าง เราได้สร้างอาร์เรย์จำนวนเต็มและกำหนดค่าเริ่มต้นด้วยค่าบางค่า จากนั้นตามค่าเริ่มต้น เสถียร_เรียงลำดับ() จัดเรียงองค์ประกอบตามลำดับจากน้อยไปหามาก:

#รวมถึง

#include <อัลกอริทึม>

ใช้เนมสเปซมาตรฐาน ;

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

{

นานาชาติ อาร์เรย์ [ ] = { 12 , 7 , 7 , 1 , 8 , 7 , 3 , 4 , 22 , 0 } ;

นานาชาติ = ขนาดของ ( อาร์เรย์ ) / ขนาดของ ( อาร์เรย์ [ 0 ] ) ;

ศาล << 'อาร์เรย์ดั้งเดิมคือ: \n ' ;

สำหรับ ( นานาชาติ ฉัน = 0 ; ฉัน < ; ++ ฉัน ) {

ศาล << อาร์เรย์ [ ฉัน ] << ' ' ;

}

เสถียร_เรียงลำดับ ( อาร์เรย์ , อาร์เรย์ + ) ;

ศาล << ' \n อาร์เรย์หลังจากการเรียงลำดับคือ: \n ' ;

สำหรับ ( นานาชาติ ฉัน = 0 ; ฉัน < ; ++ ฉัน ) {

ศาล << อาร์เรย์ [ ฉัน ] << ' ' ;

}

กลับ 0 ;

}

ตัวอย่างที่ 3

เดอะ เสถียร_เรียงลำดับ ใช้พารามิเตอร์ที่สามเพื่อระบุลำดับสำหรับการเรียงลำดับองค์ประกอบ ในตัวอย่างด้านล่าง เราได้ใช้ มากกว่า() ฟังก์ชั่นด้วย เสถียร_เรียงลำดับ() เพื่อจัดเรียงองค์ประกอบของอาร์เรย์จากมากไปน้อย

#รวมถึง

#include <อัลกอริทึม>

ใช้เนมสเปซมาตรฐาน ;

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

{

นานาชาติ อาร์เรย์ [ ] = { 12 , 7 , 7 , 1 , 8 , 7 , 3 , 4 , 22 , 0 } ;

นานาชาติ = ขนาดของ ( อาร์เรย์ ) / ขนาดของ ( อาร์เรย์ [ 0 ] ) ;

ศาล << 'อาร์เรย์ดั้งเดิม: \n ' ;

สำหรับ ( นานาชาติ ฉัน = 0 ; ฉัน < ; ++ ฉัน ) {

ศาล << อาร์เรย์ [ ฉัน ] << ' ' ;

}

เสถียร_เรียงลำดับ ( อาร์เรย์ , อาร์เรย์ + , มากขึ้น < นานาชาติ > ( ) ) ;

ศาล << ' \n อาร์เรย์หลังจากการเรียงลำดับ : \n ' ;

สำหรับ ( นานาชาติ ฉัน = 0 ; ฉัน < ; ++ ฉัน ) {

ศาล << อาร์เรย์ [ ฉัน ] << ' ' ;

}

กลับ 0 ;

}

บรรทัดล่าง

เดอะ เสถียร_เรียงลำดับ() ฟังก์ชันใน C++ เป็นอัลกอริธึมไลบรารีมาตรฐานที่ใช้ในการจัดเรียงองค์ประกอบในคอนเทนเนอร์ในลำดับที่ไม่ลดลง ในขณะที่ยังคงลำดับสัมพัทธ์ขององค์ประกอบในคอนเทนเนอร์ที่มีค่าเดียวกัน สามารถใช้กับคอนเทนเนอร์ต่างๆ เช่น อาร์เรย์ เวกเตอร์ และรายการที่เชื่อมโยง นอกจากนี้ ต้องใช้พารามิเตอร์ที่สามเพื่อระบุลำดับสำหรับองค์ประกอบการเรียงลำดับ