您现在的位置是:首页 > 后台技术 > 数据结构与算法数据结构与算法
希尔排序法(图文)
第十三双眼睛2022-06-21【数据结构与算法】人已围观
简介希尔排序法
希尔排序法也是一种插入排序,是简单插入排序法经过改造的一种排序方法,基本思想是:
把记录按下标的一定增量分组,对每组按简单插入排序法进行排序,随着增量逐渐减少,每组包含的关键词越来越多,当增量变成1时,整个文件就成了一组,算法便终止。
程序如下:
测试结果:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
把记录按下标的一定增量分组,对每组按简单插入排序法进行排序,随着增量逐渐减少,每组包含的关键词越来越多,当增量变成1时,整个文件就成了一组,算法便终止。
程序如下:
package day006; import java.util.Arrays; public class ShellSort { public static void main(String[] args) { int [] arr = {8,9,1,7,2,3,5,4,6,0}; shellSort2(arr); System.out.println(Arrays.toString(arr)); } // 希尔排序法交换法实现 public static void shellSort(int []arr){ int temp = 0; for(int gap = arr.length/2;gap>0;gap/=2){ for(int i=gap;i<arr.length;i++){ for(int j=i-gap;j>=0;j-=gap){ if(arr[j]>arr[j+gap]){ temp = arr[j]; arr[j] = arr[j+gap]; arr[j+gap] = temp; } } } } } // 希尔排序法移位法实现 public static void shellSort2(int []arr){ for(int gap = arr.length/2;gap>0;gap/=2){ for(int i=gap;i<arr.length;i++){ int j=i; int temp = arr[j]; if(arr[j]<arr[j-gap]){ while (j-gap>=0 && temp<arr[j-gap]){ arr[j] = arr[j-gap]; j-=gap; } arr[j]=temp; } } } } } |
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Tags:
很赞哦! ()