您现在的位置是:首页 > 后台技术 > 数据结构与算法数据结构与算法
希尔排序法(图文)
第十三双眼睛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:
很赞哦! ()
相关文章
随机图文
-
线性结构和非线性结构(图文)
线性结构和非线性结构 -
合并两个有序数组(图文)
合并两个有序数组 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 -
用队列实现栈(图文)
用队列实现栈 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack 类: void push(int x) 将元素 x 压入栈顶。 int pop() 移除并返回栈顶元素。 int top() 返回栈顶元素。 boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。 -
爬楼梯(图文)
爬楼梯