zoukankan      html  css  js  c++  java
  • 16-插入排序:希尔排序

    1. 直接插入排序算法适用于基本有序的排序表和数据量不大的排序表。希尔排序有称之为缩小增量排序。

    2. 下面这个视频分析的很详细

    https://www.bilibili.com/video/BV14r4y1F71a?p=66

    3. 希尔排序代码

     1 package cn.sun.it.review;
     2 
     3 import java.util.Arrays;
     4 import java.util.Scanner;
     5 
     6 public class ShellSort {
     7 
     8     public static void main(String[] args) {
     9         // 测试数据:5,3,6,2,1,9,4,8,7
    10         System.out.println("请输入若干个整数,以逗号分隔:");
    11         Scanner sc = new Scanner(System.in);
    12         String strNums = sc.nextLine();
    13         String[] tempArrNums = strNums.split(",");
    14         int[] arr = new int[tempArrNums.length];
    15         for (int i = 0; i < arr.length; i++) {
    16             arr[i] = Integer.valueOf(tempArrNums[i]);
    17         }
    18         System.out.println("排序前:" + Arrays.toString(arr));
    19         shellSort(arr);
    20         System.out.println("排序后:" + Arrays.toString(arr));
    21     }
    22 
    23     // 插入排序之希尔排序
    24     private static void shellSort(int[] arr) {
    25         int temp;
    26         for(int gap=arr.length/2;gap>0;gap/=2){
    27             for(int i = gap;i<arr.length;i++){
    28                 temp = arr[i];
    29                 int j;
    30                 for(j=i;j>=gap && arr[j-gap]>temp;j-=gap){
    31                     arr[j] = arr[j-gap];
    32                 }
    33                 arr[j] = temp;
    34             }
    35         }
    36     }
    37 
    38 }

    4. 希尔排序性能

    (4.1)空间复杂度:仅适用了常量个辅助单元,空间复杂度为O(1);

    (4.2)由于希尔排序的时间复杂度依赖于增量序列的函数,这涉及数学上尚未解决的难题,所以其时间复杂度分析比较困难。当n在某个特定范围是,希尔排序的时间复杂度约为O(n1.3),最坏情况下希尔排序时间复杂度为O(n2)

    (4.3)稳定性:不稳定

  • 相关阅读:
    dba_segments和dba_tables的不同
    查询用户表空间
    远程登录Oracle数据库
    SQL Server 收缩数据库
    Xshell乱码解决方法设置
    Spring常用注解
    Hibernate的fetch
    在 Eclipse 中使用 JSHint 检查 JavaScript 代码
    enterprise architect (EA) 源码生成UML类图,帮助理解项目工程
    上传excel数据到数据库中
  • 原文地址:https://www.cnblogs.com/sun-/p/14606880.html
Copyright © 2011-2022 走看看