算法复习之快排
2016-04-17 10:56
127 查看
/** * 希尔排序 * 时间复杂度O(n(3/2)) * 设置步长,通过步长分组,组内进行插入排序 * @author Feng * */ public class ShellSort { public static void sort(int[]src){ int step = src.length; do{ step = step/3+1;//除以3 3是可变的,根据问题规模进行相应处理,+1不可变,确保步长为一的情形一定会出现 for (int i = step; i < src.length; i+=step) { if(src[i]<src[i-step]){ for (int j = i; j >=step; j-=step) { if(src[j]<src[j-step]){ exchange(src,j,j-step); }else{ break; } } } } }while(step>1); } public static void exchange(int[]src,int i,int j){ int temp=src[i]; src[i]=src[j]; src[j]=temp; } public static void main(String[] args) { int[] src = new int[]{5,2,8,3,5,0}; sort(src); for (int i : src) { System.out.println(i); } } }
相关文章推荐
- 24. Swap Nodes in Pairs
- 显示联系人列表2 分类标题栏
- 浅谈管道模型(Pipeline)
- mac 下安装 mongodb
- Poco 之cppunit解读
- 进程调度
- 端口表
- Android LayoutInflater详解
- 算法复习之快排
- MAC下 Redis php扩展安装
- maven如何修改本地仓库与中央仓库
- 欢迎使用CSDN-markdown编辑器
- D - I Think I Need a Houseboat(1.3.1)
- opencl:kernel中两种向量类型转换(convert_T,as_typen)的主要区别
- Oracle数据库修改Number字段属性
- kubernetes安装教程(CentOS7 )
- 多线程与block
- LeetCode 146. LRU Cache
- 栈的压入、弹出序列
- HDU 1056 HangOver(数学题)