首页 > 代码库 > 常用排序之希尔排序
常用排序之希尔排序
算法简介:
先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序, 待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。
实现思路:
- 选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1;
- 按增量序列个数k,对序列进行k 趟排序;
- 每趟排序,根据对应的增量ti,将待排序列分割成若干长度为m 的子序列,分别对各子表进行直接插入排序。仅增量因子为1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。
示例图:
JAVA算法实现:
public class Shell_Sort { public static void shellSort(int[] a){ int gap = a.length/2; while(gap>=1){ for(int i=0;i<a.length;i++){ //进行插入排序 for(int j=i;j<a.length-gap;j+=gap){ if(a[j]>a[j+gap]){ int temp = a[j]; a[j] = a[j+gap]; a[j+gap] = temp; } } } gap/=2; } } public static void main(String[] args) { int[] a = {49,38,65,97,76,13,27,49,55,15}; shellSort(a); for(int b:a){ System.out.print(b+" "); } } }
常用排序之希尔排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。