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

    希尔排序

    一、基本概念

      希尔排序是插入排序的一种,又称“缩小增量排序”,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。

    二、基本原理

      希尔排序是把记录按下标的一定量分组,在直接插入排序算法的基本原理的基础上进行改进排序;

      随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个数组恰被分成一组,算法便终止。

    三、实现步骤

      1. 对整个数组进行分组,即gap = len / 2; 或者 gap = len >> 1;

      2. 进行改进的插入排序

    四、代码实现

    void shell_sort(int arr[], int len) {
        // 进行分组
    int gap = len >> 1; for (; gap > 0; gap >>= 1) { // 每次分组进行排序的趟数 for (int i = gap; i < len; ++i) { int tmp = arr[i]; int j = i - gap; // 每次间隔gap个位置进行扫描
    // 与插入排序相比,这里记录元素下标的方式发生了一些改变,但本质是一样的
    for (; j >= 0 && arr[j] > tmp; j -= gap) { arr[j + gap] = arr[j]; } // 直接进行插入 arr[j + gap] = tmp; } } }

    参考博客链接:https://www.cnblogs.com/chengxiao/p/6104371.html

  • 相关阅读:
    web基础要点记录
    前端一些干货
    正则表达式手册
    JQuery实现旋转轮播图
    JQuery模拟常见的拖拽验证
    electron应用以管理员权限启动
    原生JS模拟百度搜索关键字与跳转
    关于Application的使用
    Android事件分发机制(相关文章)
    (转)Activity的四种launchMode
  • 原文地址:https://www.cnblogs.com/bj3251101/p/14419548.html
Copyright © 2011-2022 走看看