插入,冒泡,选择,希尔排序

希尔排序
int[] array={};
int count = array.length;
for(int dk=count/2;dk>0;dk=dk/2){
//dk增量
for(int i=0;i<dk;i++){
//直接插入排序
for(int j=i+dk;j<count;j+=dk){
if(array[j]<array[j-dk]){
//如果相邻的两元素,后者比前者大,则不用调整
int temp=array[j];
int k=j-dk;
while(k>=0&&array[k]>temp){
//每次while循环后,保证把最小的插入到每组的最前面
array[k+dk]=array[k];
k-=dk;
}
//每组第一个元素为最小的元素
array[k+dk]=temp;
}
}
}
}
选择排序
int[] array={};
int count = array.length;
for(int i=0;i<count;i++){
//最小元素位置
int index=i;
//找出最小的元素所在位置
for(int j=i+1;j<count;j++){
if(array[j]<array[index]){
index=j;
}
}
//交换元素
int temp=array[index];
array[index]=array[i];
array[i]=temp;
}
冒泡排序
int[] array={};
int count = array.length;
for(int i=0;i<count;i++){
//交换相邻的元素
for(int j=1;j<count-1;j++){
if(array[j]<array[j-1]){
//交换元素
int temp=array[j-1];
array[j-1]=array[j];
array[j]=temp;
}
}
}
插入排序
int[] array={};
int count = array.length;
int i,j,k;
for(i=1;i<count;i++){
for(j=i-1;j>=0;j–){
//为a[i]在a[0,i-1]上找一个合适的位置
if(array[j]<array[i])
break;
}
if(j!=i-1){
//找合适的位置
int temp=array[i];
//将比array[i]大的数据全部往后移
for(k=i-1;k>j;k–){
array[k+1]=array[k];
}
//将array[i]放入合适的位置
array[k+1]=temp;
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值