这期内容当中小编将会给大家带来有关一文带你读懂java中的希尔排序,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
创新互联是一家专注于成都做网站、网站建设与策划设计,德清网站建设哪家好?创新互联做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:德清等地区。德清做网站价格咨询:028-86922220希尔排序:通过比较相距一定间隔的元素来工作;各趟比较所用的距离(增量)随着算法的进行而减小,直到只比较相邻元素的最后一趟排序为止。是插入排序的一种,是针对直接插入排序算法的改进。
算法思想:先将要排序的序列按某个增量d分成若干个子序列,对每个子序列中全部元素分别进行直接插入排序,然后再用一个较小的增量对它进行分组,在每组中再进行排序。当增量减到1时,整个要排序的数被分成一组,排序完成。注意:增量的取值——一般的初次取序列的一半为增量,以后每次减半,直到增量为1。
算法实现代码如下:
package exp_sort; public class ShellSort { public static void shell(int array[]) { int j; int average; //设置增量的值 for (average = array.length / 2; average > 0; average /= 2) { //步长 for (int i = average; i < array.length; i++) { //子序列进行直接插入排序 int temp = array[i]; for (j = i; j >= average && temp < array[j - average]; j -= average) { array[j] = array[j - average]; } array[j] = temp; } } for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); } System.out.println("\n"); } public static void main(String[] args) { // TODO Auto-generated method stub int array[] = { 38, 62, 35, 77, 55, 14, 35, 98 }; shell(array); } }