วิธีการสั่งซื้อพจนานุกรมคือการสร้างการเตรียมการทั้งหมดทีละคนตามแนวคิดของการเรียงลำดับพจนานุกรม
ในวิชาคณิตศาสตร์คำสั่งพจนานุกรมหรือพจนานุกรม (หรือที่เรียกว่าคำสั่งคำสั่งพจนานุกรมลำดับตัวอักษรหรือพจนานุกรม) เป็นวิธีการเรียงตามตัวอักษรซึ่งคำที่จัดเรียงตามลำดับตัวอักษร การวางนัยทั่วไปนี้ส่วนใหญ่อยู่ในการกำหนดลำดับทั้งหมดของลำดับ (มักเรียกว่าคำในวิทยาศาสตร์คอมพิวเตอร์) ขององค์ประกอบที่กำหนดชุดขององค์ประกอบที่สั่งซื้ออย่างสมบูรณ์ (มักเรียกว่าตัวอักษร)
สำหรับการจัดเรียงหมายเลข 1, 2, 3 ... n ลำดับของการจัดเรียงที่แตกต่างกันจะถูกกำหนดโดยการเปรียบเทียบลำดับของตัวเลขที่สอดคล้องกันทีละหนึ่งจากซ้ายไปขวา ตัวอย่างเช่นสำหรับการจัดเรียง 12354 และ 12345 จาก 5 หมายเลขการจัดเรียง 12345 อยู่ด้านหน้าและการจัดเรียง 12354 อยู่ด้านหลัง ตามกฎระเบียบนี้ข้อแรกในบรรดาการเตรียมการทั้งหมดของหมายเลข 5 คือ 12345 และหมายเลขสุดท้ายคือ 54321
ตัวอย่างเช่นการเตรียมการทั้งหมดที่ประกอบด้วย 1, 2, 3, จากขนาดเล็กถึงขนาดใหญ่คือ:
123,132,213,231,312,321
การเตรียมการทั้งหมดประกอบด้วย 1, 2, 3, 4:
1234, 1243, 1324, 1342, 1423, 1432
2134, 2143, 2314, 2341, 2413, 2431,
3124, 3142, 3214, 3241, 3412, 3421,
4123, 4132, 4213, 4231, 4312, 4321
ขั้นแรกต้องระบุลำดับของอักขระในชุดอักขระที่กำหนดและบนพื้นฐานนี้แต่ละการจัดเรียงจะถูกสร้างขึ้นตามลำดับ
[ตัวอย่าง] ชุดอักขระ {1,2,3} ตัวเลขที่เล็กกว่าเป็นอันดับแรกดังนั้นการจัดเรียงเต็มรูปแบบที่สร้างขึ้นในลำดับพจนานุกรมคือ: 123, 132, 213, 231, 312, 321
สร้างการเปลี่ยนแปลงครั้งต่อไปที่ได้รับการเปลี่ยนแปลงอย่างเต็มรูปแบบและสิ่งที่เรียกว่าสิ่งต่อไปคือสตริงที่อยู่ติดกับอันถัดไปโดยไม่มีคำสั่งพจนานุกรม สิ่งนี้ต้องการให้อันนี้มีคำนำหน้าเช่นเดียวกับอันต่อไปที่นานที่สุดเท่าที่จะเป็นไปได้นั่นคือการเปลี่ยนแปลงนั้น จำกัด อยู่ที่คำต่อท้ายที่สั้นที่สุดเท่าที่จะเป็นไปได้
มีความสัมพันธ์บางอย่างระหว่างข้อตกลงหลังและข้อตกลงก่อนหน้า กระบวนการแก้ปัญหาของการจัดเรียงหลังมีดังนี้:
ด้วยการจัดเรียง (p) = 2763541 เรียงตามพจนานุกรมการจัดเรียงครั้งต่อไปคืออะไร?
2763541 (ค้นหาคำสั่งซื้อบวกสุดท้าย 35)
2763541 (ค้นหาหมายเลขสุดท้าย 4 หลังจาก 3 และใหญ่กว่า 3)
2764531 (สวิตช์ 3, 4 ตำแหน่ง)
2764135 (กลับ 5, 3, 1 หลัง 4)
ต่อไปนี้เป็นคำอธิบายของการจัดเรียงถัดไปของ p [1 … n]:
ค้นหา i = สูงสุด {J | p [j 1] <p [j]} (ค้นหาลำดับบวกสุดท้าย)
ค้นหา j = สูงสุด {k | p [i 1] <p [k]} (ค้นหาอันสุดท้ายที่ยิ่งใหญ่กว่า p [i 1])
แลกเปลี่ยน p [i 1] และ p [j] เพื่อรับ p [1] … p [i-2] p [j] p [i] p [i+1] … p [j-1] p [i-1] p [j+1] … p [n]
ย้อนกลับหมายเลขหลังจาก p [j] เพื่อรับ p [1] … p [i-2] p [j] p [n] … p [j+1] p [i-1] p [j-1] … p [i]
การใช้งานรหัสมีดังนี้:
int คงที่ส่วนตัว [] getPermutation (int [] in) {int [] ns = in; int base = -1; สำหรับ (int i = ns.length-1; i> = 1; i--) {ถ้า (ns [i-1] <ns [i]) {base = i-1; (int i = ns.length-1; i> = base; i--) {ถ้า (ns [i]> ns [base]) {bigger = i; break;}} // system.out.out.println (ใหญ่กว่า); swap (ns, ฐาน, ใหญ่กว่า); reverse (ns, base+1, ns.length-1); {int left = i, ขวา = j; ในขณะที่ (ซ้าย <ขวา) {swap (ns, ซ้าย, ขวา); ซ้าย ++; ขวา-;}} การแลกเปลี่ยนโมฆะคงที่ส่วนตัว (int [] ns, ฐาน int, int ใหญ่กว่า) {int temp = ns [base]; ns [base] = nsสรุป
ข้างต้นคือทั้งหมดที่เกี่ยวกับการวิเคราะห์อัลกอริทึมการเรียงลำดับพจนานุกรมภาษา Java และตัวอย่างรหัส ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!