织梦做的网站首页被篡改,主机 安装wordpress,做网站还有用吗,网站建设与维护 实训看动画理解
【数据结构】八大排序(超详解附动图源码)_数据结构排序-CSDN博客 一 基本思想
先选定一个整数gap#xff0c;把待排序文件中所有记录分成gap个组#xff0c;所有距离为gap的记录分在同一组内#xff0c;并对每一组内的元素进行排序。
然后将gap逐渐减小重复上…看动画理解
【数据结构】八大排序(超详解附动图源码)_数据结构排序-CSDN博客 一 基本思想
先选定一个整数gap把待排序文件中所有记录分成gap个组所有距离为gap的记录分在同一组内并对每一组内的元素进行排序。
然后将gap逐渐减小重复上述分组和排序的工作。
当到达gap1时所有元素在统一组内排好序。 二 代码实现
import java.util.Arrays; // 导入Arrays类用于数组操作public class Main {// 主方法程序的入口点public static void main(String[] args) {// 初始化一个整型数组包含一些元素int arr[] {1, 33, 2, 645, 747, 876, -1, -12345, 9, 10};// 调用sort1方法对数组进行排序sort1(arr);// 使用Arrays.toString方法打印排序后的数组System.out.println(Arrays.toString(arr));}// 定义一个私有静态方法sort1用于对整型数组进行排序private static void sort1(int[] arr) {// 外层循环控制间隔gap的值for(int gap arr.length / 2 ; gap 0; gap / 2){// 内层循环从gap开始遍历数组for(int i gap; i arr.length; i){// 最内层循环用于比较和交换元素for(int j i - gap; j 0; j--){// 如果当前元素比它后面gap位置的元素大则交换它们if(arr[j] arr[j gap]){int temp arr[j];arr[j] arr[j gap];arr[j gap] temp;}}}}}
} 三 希尔排序的特性总结
希尔排序是对直接插入排序的优化。 当gap 1时都是预排序目的是让数组更接近于有序。当gap 1时数组已经接近有序的了这样就会很快。这样整体而言可以达到优化的效果。 希尔排序的时间复杂度不好计算因为gap的取值方法很多导致很难去计算这里不深究。 时间复杂度O(N^1.5) 空间复杂度O(1) 稳定性不稳定。