zoukankan      html  css  js  c++  java
  • 常见排序算法-----希尔排序

     1 // 原理 :用grap(希尔增量)将大数据组进行分组 对每一组进行排序
     2     // 在写算法的时候,可以从第grap(希尔增量)个元素开始比较,每次减少grap 即可与同一组的上个元素进行比较,当遍历完一次后
     3     // grap/2,继续循环,直到grap >0;
     4   
     5     // 插入版
     6     public static void shellSort(int[] arr) {
     7         int grap = arr.length >> 1;
     8 
     9         for (; grap > 0; grap >> 1) {
    10 
    11             for (int i = grap; i < arr.length; i++) {
    12                 int j = i;
    13                 while (j >= grap && arr[j] < arr[j - grap]) {
    14                     swap(arr, j, j - grap);
    15                     j -= grap;
    16                 }
    17             }
    18 
    19         }
    20     }
    21 
    22     // 移动版
    23     public static void shellSort2(int[] arr) {
    24         int grap = arr.length >> 1;
    25         for (; grap > 0; grap >>1) {
    26             for (int i = grap; i < arr.length; i++) {
    27                 int j = i;
    28                 int temp = arr[i];
    29                 
    30                 while (j >= grap && temp < arr[j - grap]) {
    31                     arr[j] = arr[j - grap];
    32                     j -= grap;
    33                 }
    34                 arr[j] = temp;
    35             }
    36 
    37         }
    38     }

     时间复杂度为O(n^3/2) 希尔排序不是一个稳定性排序

  • 相关阅读:
    Java学习之路----计算圆形的面积和周长
    数据库系统的基本组成内容
    软件测试的含义以及测试的对象
    wg sync.WaitGroup执行顺序
    go channel
    字符串操作
    scanf
    py停止工作
    jira索引失败
    py kafka
  • 原文地址:https://www.cnblogs.com/maxbolg/p/9343685.html
Copyright © 2011-2022 走看看