ชวาฮิลล์เรียงลำดับ
การเรียงลำดับแบบเนินเป็นการเรียงลำดับแบบแทรกและอาจเรียกอย่างชัดเจนว่าวิธีการเพิ่มขนาดแบบหดตัว แนวคิดพื้นฐานคือการแบ่งอาร์เรย์ออกเป็นหลายๆ อาร์เรย์ คล้ายกับวิธีหารและพิชิต แต่การหารที่นี่ถูกควบคุมโดยค่าคงที่ d
0<d<n, n คือความยาวของอาร์เรย์ อัลกอริธึมนี้มีความเร็วของการเรียงลำดับการแทรก และยังถือได้ว่าเป็นอัลกอริธึมที่ได้รับการปรับปรุง ในอัลกอริธึมการแทรก หากมีจำนวนน้อยที่สุดที่ส่วนท้ายของอาร์เรย์ อัลกอริธึมการแทรกจะทำซ้ำหมายเลขสุดท้าย
การย้ายตำแหน่งไปที่ตำแหน่งแรกจะทำให้เสียเงินเป็นจำนวนมาก การใช้การเรียงลำดับ Hill ที่ได้รับการปรับปรุงนี้จะทำให้สามารถเคลื่อนย้ายองค์ประกอบข้อมูลในระยะยาวได้ นี่คือข้อดีของอัลกอริทึมนี้
คัดลอกรหัสรหัสดังต่อไปนี้:
แพ็คเกจ cn.cqu.coce.xutao;
คลาสสาธารณะ shell3 {
โมฆะคงที่สาธารณะ main (String args []) {
int[]={7,43,23,5,3,2,0,6,74,9};
int n=a.ความยาว;
สำหรับ(int i=0;i<n;i++)
System.out.print(a[i]+"/t");
System.out.println();
สำหรับ(int gap=n/2;gap>0;gap/=2){
สำหรับ(int i=gap;i<n;i++){
สำหรับ(int j=i-gap;j>=0&&a[j]>a[j+gap];j-=gap){
int temp=a[เจ+ช่องว่าง];
ก[เจ+ช่องว่าง]=ก[เจ];
a[j]=อุณหภูมิ;
-
-
-
สำหรับ(int i=0;i<n;i++)
System.out.print(a[i]+"/t");
System.out.println();
-
-
ตัวอย่างที่สอง
คัดลอกรหัสรหัสดังต่อไปนี้:
คลาสเชลล์
-
โมฆะสาธารณะ shell_sort (อาร์เรย์ int []) {
สำหรับ(int d=5;d>0;d=d-2){
สำหรับ(int c=0;c<arrays.length-d;c++){
สำหรับ(int i=c;i<arrays.length;i=i+d){
สำหรับ(int j=i;j>0;j=jd){
ถ้า(เจ<d)
หยุดพัก;
ถ้า(อาร์เรย์[j]<อาร์เรย์[jd]){
int ทีเอ็มพี;
tmp=อาร์เรย์[เจ];
อาร์เรย์[j]=อาร์เรย์[jd];
อาร์เรย์[jd]=tmp;
-
-
-
-
snp(อาร์เรย์);
-
-
โมฆะสาธารณะ snp (int [] อาร์เรย์) {
สำหรับ(int i=0;i<arrays.length;i++){
System.out.print(อาร์เรย์[i]+" ");
-
System.out.println();
-
โมฆะสาธารณะคง main (String [] args)
-
เชลล์ s=เชลล์ใหม่();
อินท์[] ก={45,20,80,40,26,58,66,70};
s.shell_sort(ก);
-
-
ผลการวิ่ง:
คัดลอกรหัสรหัสดังต่อไปนี้:
---------- จาวา ----------
20 70 40 26 58 66 80
20 58 45 26 70 66 80
26 40 45 58 66 70 80
เอาต์พุตเสร็จสมบูรณ์ (ใช้เวลา 0 วินาที) - การสิ้นสุดตามปกติ