【动手写排序】希尔排序
2015-07-03 20:55
253 查看
import org.junit.Test;
public class ShellInsertSort {
public void sort(int[] arr){
int increment=arr.length/2;
while(increment>0){
for(int i=0;i<increment;i++){
for(int j=i+increment;j<arr.length;j+=increment){
int k=j;
while(k>i && arr[k]<arr[k-increment] ){
swap(arr,k,k-1);
k-=increment;
}
}
}
increment/=2;
}
}
public void swap(int[] arr,int i,int j){
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
@Test
public void test(){
int[] arr={9,8,7,6,4,5,3,1,2};
// int[] arr={4};
sort(arr);
for(int i:arr){
System.out.print(i+" ");
}
}
}
复杂度:O(n3/2)
public class ShellInsertSort {
public void sort(int[] arr){
int increment=arr.length/2;
while(increment>0){
for(int i=0;i<increment;i++){
for(int j=i+increment;j<arr.length;j+=increment){
int k=j;
while(k>i && arr[k]<arr[k-increment] ){
swap(arr,k,k-1);
k-=increment;
}
}
}
increment/=2;
}
}
public void swap(int[] arr,int i,int j){
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
@Test
public void test(){
int[] arr={9,8,7,6,4,5,3,1,2};
// int[] arr={4};
sort(arr);
for(int i:arr){
System.out.print(i+" ");
}
}
}
复杂度:O(n3/2)
相关文章推荐
- 同步工具类(一)
- Hibernate 继承映射
- 全选、反选、全不选
- Fragment 创建及替换
- 面向对象的三个基本特性(大话设计模式笔记)
- postgreSQL数据类型
- 【超级经典】程序员装B指南
- Ubuntu 15.04 或更新版 更新源/Ubuntu 15.04 Vivid Vervet更新源已可用
- Android异步加载图片与文字(二)
- 20150619_OC之NSFileManager文件管理器
- java中AWT和SWing的区别与联系
- 如果给我一个时间节点,我想去到我离开这个世界的那一天
- 排序 - 选择法
- 傅立叶变换第1讲
- 排序 - 选择法
- Pascal 三角形(算法)
- Mavlink 协议硬解析主要代码
- 《SAS编程和数据挖掘商业案例》学习笔记# 19
- java的圆点运算符:.
- Cocos2d-x 单点触摸--让我们用手指动起来的精灵