数据结构插入排序&希尔排序
直接插入排序
public void insertsort(int[] num,int n){
for(int i=1;i<n;i++){
//如果大于则直接插入
//如果小于则向后移动数组
if(num[i]<num[i-1]){
//存储该元素和位置,移动前一个元素位置
int x=num[i];
int j=i-1;
num[i]=num[i-1];
//一直移动到大于某个值时
while( x < num[j] ){
num[j+1]=num[j];
j--;
}
num[j]=x;
}
for(int element:num){
System.out.println(element);
}
}
希尔排序
public void shelsort(int[] num,int n){
int i,j,inc,key;
//初始增量为n/2,此后是每次除以2
for(inc=n/2;inc>0;inc/=2){
//每一趟采用插入排序,从inc开始,一共要进行inc~n-1次
for(i=inc;i<n;i++){
//存储当前值
key=num[i];
//j以增量级递减,key和j-inc比较,因此j最小值大于inc
for(j=i;j>=inc && key<num[j-inc];j-=inc){
num[j]=num[j-inc];
}
num[j]=key;
}
}
希尔排序作者:请叫我AXin的个人空间_哔哩哔哩_Bilibili

浙公网安备 33010602011771号