คำถามติดแท็ก mergesort


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

30
วิธีผสานสองอาร์เรย์ที่เรียงลำดับไว้ในอาร์เรย์ที่เรียงลำดับแล้ว [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ นี่เป็นคำถามของฉันในการสัมภาษณ์และนี่คือวิธีการแก้ปัญหาที่ฉันมีให้: public static int[] merge(int[] a, int[] b) { int[] answer = new int[a.length + b.length]; int i = 0, j = 0, k = 0; while (i < a.length && j < b.length) { if (a[i] < b[j]) { answer[k] = …

6
เหตุใดวิธี Arrays.sort ของ Java จึงใช้อัลกอริธึมการเรียงลำดับที่แตกต่างกันสองแบบสำหรับประเภทต่างๆ
Arrays.sortวิธีการของ Java 6 ใช้ Quicksort สำหรับอาร์เรย์ของ primitives และผสานการเรียงลำดับสำหรับอาร์เรย์ของวัตถุ ฉันเชื่อว่า Quicksort ส่วนใหญ่เร็วกว่าการจัดเรียงแบบผสานและใช้หน่วยความจำน้อยกว่า การทดลองของฉันสนับสนุนแม้ว่าอัลกอริทึมทั้งสองจะเป็น O (n log (n)) เหตุใดจึงใช้อัลกอริทึมที่แตกต่างกันสำหรับประเภทต่างๆ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.