Java希尔排序
class XiEr{
public void sort(int[] arr) {
int increment=arr.length;
int temp,i,j;
while(increment>1) {//对增量序列进行设置
increment=increment/3+1;//设置不同的增量
for(i=increment+1;i<arr.length;i++) {
if(arr[i]<arr[i-increment]) {//arr[i]插入排序
temp=arr[i];//将值存起来
for(j=i-increment;j>0&&arr[j]>temp;j-=increment) {
arr[j+increment]=arr[j];
}
arr[j+increment]=temp;
}
}
}
}
}
public class XiEr_arrange {
public static void main(String[] args) {
int[] arr= {0,55,44,85,16,12,17,99,65};//设置下标为0的值为0
XiEr xier=new XiEr();//创建对象
xier.sort(arr);
System.out.print("希尔排序后的结果为:");
for(int i=1;i<arr.length;i++) {
System.out.print(arr[i]+" ");
}
}
}
Python实现希尔排序
def shellSort(arr):
n = len(arr)
gap = int(n/2)#设置增量
while gap > 0:
for i in range(gap,n):
temp = arr[i]
j = i
while j >= gap and arr[j-gap] >temp:
arr[j] = arr[j-gap]
j -= gap
arr[j] = temp
gap = int(gap/2)
print(arr)
if __name__=="__main__":
arr =[9,1,5,8,3,7,4,6,2]
shellSort(arr)