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

  • 相关阅读:
    第二次结对编程作业
    第一次结对编程作业
    团队项目需求分析报告
    第03组 团队Git现场编程实战
    团队项目选题报告
    上传大文件的问题
    Maven安装与环境变量设置
    jsp中的相对路径和绝对路径
    Highcharts使用入门随笔
    Tomcat服务器项目外网无法访问
  • 原文地址:https://www.cnblogs.com/bj3251101/p/14419548.html
Copyright © 2011-2022 走看看