แนวคิดพื้นฐานของอัลกอริธึมการเรียงลำดับ Hill คือ: ขั้นแรกให้นำจำนวนเต็ม d1 น้อยกว่า n เป็นส่วนเพิ่มครั้งแรก และแบ่งบันทึกทั้งหมดในไฟล์ออกเป็นกลุ่ม d1 บันทึกทั้งหมดที่มีระยะห่างเป็นทวีคูณของ dl จะถูกจัดอยู่ในกลุ่มเดียวกัน ขั้นแรกให้ดำเนินการเรียงลำดับการแทรกโดยตรงภายในแต่ละกลุ่ม จากนั้น เพิ่มค่าครั้งที่สอง d2<d1 แล้วทำซ้ำการจัดกลุ่มและการเรียงลำดับข้างต้นจนกระทั่งเพิ่มค่า dt=1(dt<dt-l<…<d2<d1 ) นั่นคือ จนกระทั่งทั้งหมด บันทึกจะถูกจัดอยู่ในกลุ่มเดียวกันสำหรับการเรียงลำดับการแทรกโดยตรง วิธีนี้เป็นวิธีการแทรกแบบกลุ่มเป็นหลัก
// การเรียงลำดับการแทรกด้วยการเพิ่มโมฆะสาธารณะเชลล์ (int [] array) { int len = array.length; while (h < len) h = h * 3 + 1; while (h >= 1) { for (int i = 1; i < len; i++) { for (int j = i; j >= h; j = j - h) { if (array[j] < array[j - h]) { Sort.swap(array, j, j - h);//สลับ j และ jh } อื่นแตก; } } h = h / 3;
แผนผังของการเรียงลำดับเนินเขา
ข้างต้นคือเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคนในการฝึกฝนการเรียงลำดับ Java Hill