คอมพิวเตอร์การเขียนโปรแกรม

Quicksort เป็นวิธีการเขียนโปรแกรม

ในปี 1960 เคเอผมหงอกพัฒนาวิธีการสำหรับการเรียงลำดับอย่างรวดเร็วของข้อมูลกลายเป็นที่มีชื่อเสียงที่สุด วันนี้มันถูกนำมาใช้กันอย่างแพร่หลายในการเขียนโปรแกรมตามที่มันมีจำนวนมากของคุณสมบัติในเชิงบวก: มันสามารถนำมาใช้สำหรับกรณีทั่วไปจะต้องมีการเพิ่มขึ้นเล็กน้อยในหน่วยความจำเพิ่มเติมเข้ากันได้กับชนิดของรายการและง่ายต่อการใช้ แต่มีข้อเสียซึ่งมี Quicksort: การใช้งานได้รับอนุญาตมากผิดพลาดและมันก็เป็นความไม่แน่นอนค่อนข้าง

แต่ก็เป็นรุ่นที่การศึกษามากที่สุด หลังจากที่โฮชำระเงินครั้งแรกหลายคนทำการศึกษาความหนาแน่นของมัน ฐานขนาดใหญ่ก่อตั้งขึ้นตามคำถามทางทฤษฎีของการหาเวลาที่ใช้ในงานที่ได้รับการค้ำจุนจากหลักฐานเชิงประจักษ์ มีข้อเสนอที่แท้จริงในการปรับปรุงขั้นตอนวิธีการขั้นพื้นฐานและความเร็วที่เพิ่มขึ้นได้

quicksort เป็นเรื่องธรรมดามากก็สามารถพบได้ทุกที่ บนพื้นฐานของวิธีการที่จะดำเนินการ TList.Sort ปัจจุบันในทุกรุ่น (ยกเว้น 1) Delphi, ฟังก์ชั่นห้องสมุดของเวลาที่มันเอาไปเสร็จสมบูรณ์ qsort ใน C ++

หลักการพื้นฐานของการดำเนินงานได้สูตรเป็น "แบ่งและพิชิต" มันเกิดขึ้นที่จะหมดรายการออกเป็นสองกลุ่มและมีการจัดเรียงสำหรับแต่ละส่วนด้วยตัวเอง มันตามที่สนใจมากขึ้นควรจะจ่ายให้กระบวนการแยกในระหว่างที่ต่อไปนี้เกิดขึ้น: จะถูกกำหนดโดยองค์ประกอบฐานและได้มีการปรับปรุงใหม่ค่อนข้างรายการทั้งหมดของเขา สร้างขึ้นทางด้านซ้ายของกลุ่มของผู้สมัครที่คุ้มค่าของการที่มีค่าน้อยกว่าทุกกฎการโอนเงินอื่น ๆ แต่กลับกลายเป็นว่าองค์ประกอบหลักในรายการเรียงอยู่ในสถานที่ที่ถูกต้อง ขั้นตอนต่อไป - ความท้าทาย recursive ฟังก์ชั่นการเรียงลำดับสำหรับทั้งสองฝ่ายขององค์ประกอบที่สัมพันธ์กับฐาน มันจะจบกระบวนการทำงานเฉพาะถ้ารายการมีเพียงองค์ประกอบหนึ่งที่มีการจัดเรียง ดังนั้นเพื่อที่จะโทฟังก์ชั่นการเขียนโปรแกรมเป็นที่จัดเรียงอย่างรวดเร็วก็เป็นสิ่งจำเป็นที่จะรู้ว่าการทำงานของอัลกอริทึมในระดับต่ำกว่าก) ทางเลือกของสมาชิกฐาน; ข) รายชื่อของการเปลี่ยนแปลงที่มีประสิทธิภาพสูงสุดในการผลิตทั้งสองชุดที่มีค่าขนาดเล็กและขนาดใหญ่

ทำความคุ้นเคยกับหลักการแรก เมื่อเลือกสมาชิกฐานที่ควรนึกคิดได้รับการคัดเลือกจากรายการของค่าเฉลี่ย จากนั้นในช่วงพักจะแบ่งออกเป็นสองส่วนเท่ากัน เพียงแค่การคำนวณ ค่าเฉลี่ย ในรายการเป็นเรื่องยากมากดังนั้นแม้การเรียงลำดับเร็วที่สุดทะลุด้านแคลคูลัสนี้ แต่ทางเลือกขององค์ประกอบพื้นฐานที่มีค่าสูงสุดหรือต่ำสุด - ยังไม่ได้เป็นตัวเลือกที่ดีที่สุด ในกรณีที่การตัดสินใจดังกล่าวของหนึ่งสร้างรายการที่ว่างเปล่าจะได้รับการรับประกันและเต็มสอง ดังนั้นสรุปได้ว่าในฐานะสมาชิกฐานควรจะเลือกอย่างใดอย่างหนึ่งที่อยู่ใกล้กับค่าเฉลี่ย แต่ในที่สูงสุดและต่ำสุด

เมื่อเลือกที่จะพิจารณาคุณสามารถดำเนินการขั้นตอนวิธีการสลายตัว นี้เรียกว่าลูปด้านการจัดเรียงอย่างรวดเร็ว ทุกอย่างถูกสร้างขึ้นบนสองดัชนีการเข้าถึงอย่างรวดเร็ว: ครั้งแรกไปกว่าองค์ประกอบจากซ้ายไปขวาที่สองในทางตรงกันข้ามจากขวาไปซ้าย เริ่มต้นการดำเนินการดำเนินการที่เหมาะสม: ดัชนีอยู่ในรายการและเปรียบเทียบค่าทั้งหมดไปยังหลัก วงจรจะเสร็จสมบูรณ์เมื่อองค์ประกอบที่มีค่าน้อยกว่าหรือเท่ากับพื้นฐาน นั่นคือมีการเปรียบเทียบและลดค่าของดัชนี ในมือซ้ายเมื่องานเสร็จมากกว่าหรือมีค่าเท่ากัน ที่นี่การเพิ่มขึ้นของมูลค่าการเปรียบเทียบ

ในขั้นตอนของขั้นตอนวิธีการแบ่งพาร์ทิชันซึ่งประกอบด้วย quicksort นี้สองสถานการณ์ที่อาจเกิดขึ้น แรกก็คือว่าดัชนีด้านซ้ายจะน้อยกว่าด้านขวา นี้แสดงให้เห็นข้อผิดพลาดนั้นมีองค์ประกอบที่มันถูกระบุไว้ในรายชื่ออยู่ในลำดับที่ไม่ถูกต้อง เอาท์พุท - เปลี่ยนตำแหน่งของพวกเขา สถานการณ์ที่สองคือเมื่อทั้งสองของคอลัมน์เท่ากับหรือข้าม นี้แสดงให้เห็นการแยกที่ประสบความสำเร็จของรายการที่เป็นงานที่เสร็จสมบูรณ์แล้ว

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 th.atomiyme.com. Theme powered by WordPress.