希尔排序
2021-01-06 12:28
标签:组元 有序 shellSort 增量 长度 increase tps 分组 font 希尔排序 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。 在网上看到一个很不错的例子,分享一下:https://blog.csdn.net/qq_39207948/article/details/80006224 首先,将数组中的元素按下标间距为4分组,即array[0]和array[4]一组,array[1]和array[5]一组,以此类推,间距4就被称为增量;第一个增量一般是数组长度的一半 对分好的组进行插入排序,各组就变得有序了;并按照小元素在前面,大元素在后面重新排列数组 然后,将增量变为原来的一半,也就是2,再重新分组: 对新分组进行插入排序,并重新排列数组: 再将增量变为原来的一半,也就是1;当增量为1时,也意味着希尔排序到了最后一步: 增量为1时就只剩下一个组了,直接对该组进行插入排序,这一组的数据也就完成了排序 希尔排序 标签:组元 有序 shellSort 增量 长度 increase tps 分组 font 原文地址:https://www.cnblogs.com/javaisbest/p/12977290.html
public class ShellSort {
public void shellSort(Integer arr[]){
//先判断数组元素是否只有一个以下,若只有一个就不用排序
if(arr.lengthreturn;
//定义增量
int increase = arr.length/2;
//判断增量是否到1了,没到1就进行排序
while(increase>=1){
for(int i=0;i