返回顶部
首页 > 资讯 > 后端开发 > Python >Java、PHP、Python怎么实现希尔排序
  • 616
分享到

Java、PHP、Python怎么实现希尔排序

2023-06-27 19:06:07 616人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍“Java、PHP、python怎么实现希尔排序”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java、php、Python怎么实现希尔排序”文章能帮助大家解决问题。希尔排序(she

这篇文章主要介绍“Java、PHPpython怎么实现希尔排序”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java、phpPython怎么实现希尔排序”文章能帮助大家解决问题。

希尔排序(shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。

希尔排序是基于插入排序的以下两点性质而提出改进方法的:

  1. 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率;
  2. 但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位;

希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录”基本有序”时,再对全体记录进行依次直接插入排序。

算法步骤

选择一个增量序列 t1,t2,……,tk,其中 ti > tj, tk = 1;

按增量序列个数 k,对序列进行 k 趟排序;

每趟排序,根据对应的增量 ti,将待排序列分割成若干长度为 m 的子序列,分别对各子表进行直接插入排序。仅增量因子为 1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。

动图演示

Java、PHP、Python怎么实现希尔排序

代码实现

JavaScript

实例

function shellSort(arr) {   var len = arr.length,       temp,       gap = 1;   while(gap for (gap; gap > 0; gap = Math.floor(gap/3)) {       for (var i = gap; i for (var j = i-gap; j >= 0 && arr[j] > temp; j-=gap) {               arr[j+gap] = arr[j];           }           arr[j+gap] = temp;       }   }   return arr;}

Python

实例

def shellSort(arr):   import math   gap=1   while(gap while gap > 0:       for i in range(gap,len(arr)):           temp = arr[i]           j = i-gap           while j >=0 and arr[j] > temp:               arr[j+gap]=arr[j]               j-=gap           arr[j+gap] = temp       gap = math.floor(gap/3)   return arr

Go

实例

func shellSort(arr []int) []int {       length := len(arr)       gap := 1       for gap for gap > 0 {               for i := gap; i for j >= 0 && arr[j] > temp {                               arr[j+gap] = arr[j]                               j -= gap                       }                       arr[j+gap] = temp               }               gap = gap / 3       }       return arr}

Java

实例

public static void shellSort(int[] arr) {   int length = arr.length;   int temp;   for (int step = length / 2; step >= 1; step /= 2) {       for (int i = step; i while (j >= 0 && arr[j] > temp) {               arr[j + step] = arr[j];               j -= step;           }           arr[j + step] = temp;       }   }}

PHP

实例

function shellSort($arr){   $len = count($arr);   $temp = 0;   $gap = 1;   while($gap $len / 3) {       $gap = $gap * 3 + 1;   }   for ($gap; $gap > 0; $gap = floor($gap / 3)) {       for ($i = $gap; $i $len; $i++) {           $temp = $arr[$i];           for ($j = $i - $gap; $j >= 0 && $arr[$j] > $temp; $j -= $gap) {               $arr[$j+$gap] = $arr[$j];           }           $arr[$j+$gap] = $temp;       }   }   return $arr;}

C

实例

void shell_sort(int arr[], int len) {       int gap, i, j;       int temp;       for (gap = len >> 1; gap > 0; gap >>= 1)               for (i = gap; i for (j = i - gap; j >= 0 && arr[j] > temp; j -= gap)                               arr[j + gap] = arr[j];                       arr[j + gap] = temp;               }}

C++

实例

templatevoid shell_sort(T array[], int length) {   int h = 1;   while (h while (h >= 1) {       for (int i = h; i for (int j = i; j >= h && array[j]

关于“Java、PHP、Python怎么实现希尔排序”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网Python频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: Java、PHP、Python怎么实现希尔排序

本文链接: https://lsjlt.com/news/313387.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java、PHP、Python怎么实现希尔排序
    这篇文章主要介绍“Java、PHP、Python怎么实现希尔排序”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java、PHP、Python怎么实现希尔排序”文章能帮助大家解决问题。希尔排序(She...
    99+
    2023-06-27
  • Java希尔排序怎么实现
    这篇文章主要讲解了“Java希尔排序怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java希尔排序怎么实现”吧!希尔排序(shell sort)是插入排序的一种,它是简单插入排序经过...
    99+
    2023-06-02
  • python编程实现希尔排序
    观察一下”插入排序“:其实不难发现她有个缺点:   如果当数据是”5, 4, 3, 2, 1“的时候,此时我们将“无序块”中的记录插入到“有序块”时,估计俺们要崩盘,每次插入都要移动位置,此时插入排序的效率...
    99+
    2022-06-04
    希尔 python
  • C#实现希尔排序
    对于大规模乱序的数组,插入排序很慢,因为它只会交换相邻的元素,因此元素只能一点一点地从数组地一段移动到另一端。希尔排序改进了插入排序,交换不相邻地元素以对数组地局部进行排序,最终用插...
    99+
    2024-04-02
  • Java实现插入排序,希尔排序和归并排序
    目录插入排序算法步骤动图演示JavaScript代码实现Python代码实现Go代码实现Java代码实现希尔排序算法步骤JavaScript代码实现python代码实现Go代码实现J...
    99+
    2022-12-22
    Java插入排序 Java希尔排序 Java归并排序 Java排序
  • 图解排序算法之希尔排序Java实现
    目录一、基本思想二、代码实现三、总结一、基本思想 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整...
    99+
    2024-04-02
  • python排序算法之希尔排序
    目录一、前言二、算法描述第一步:第二步:第三步:第四步:第五步:三、代码实现一、前言 相关知识来自《python算法设计与分析》。初级排序算法是指几种较为基础且容易理解的排序算法。初...
    99+
    2023-05-17
    python排序算法 python希尔排序
  • C#如何实现希尔排序
    本篇内容主要讲解“C#如何实现希尔排序”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#如何实现希尔排序”吧!对于大规模乱序的数组,插入排序很慢,因为它只会交换相邻的元素,因此元素只能一点一点地...
    99+
    2023-06-30
  • 怎么利用Java实现一个希尔排序算法
    这期内容当中小编将会给大家带来有关怎么利用Java实现一个希尔排序算法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java 实现希尔排序Java代码    pub...
    99+
    2023-05-31
    java ava 希尔排序
  • Java数据结构之插入排序与希尔排序怎么实现
    这篇文章主要介绍“Java数据结构之插入排序与希尔排序怎么实现”,在日常操作中,相信很多人在Java数据结构之插入排序与希尔排序怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java数据结构之插入排序...
    99+
    2023-07-05
  • C++实现希尔排序算法实例
    目录1.代码模板2.算法介绍3.实例1.代码模板 // 希尔排序(Shell Sort) void ShellSort(SqList *L) { int i, j; ...
    99+
    2024-04-02
  • 分析Java排序算法之希尔排序
    这篇文章主要介绍“分析Java排序算法之希尔排序”,在日常操作中,相信很多人在分析Java排序算法之希尔排序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”分析Java排序算法之希尔排序”的疑惑有所帮助!接下来...
    99+
    2023-06-25
  • 图解Java排序算法之希尔排序
    目录基本思想代码实现总结希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小...
    99+
    2024-04-02
  • 排序算法图解之Java希尔排序
    目录1.希尔排序简介2.希尔排序算法图解3.希尔排序代码实现1.希尔排序简介 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法,其也是一种特殊的插入排序,即将...
    99+
    2022-11-13
    Java 希尔排序 Java 排序算法 Java 排序
  • c++实现排序算法之希尔排序方式
    目录排序算法之希尔排序基本思想希尔排序算法复杂度分析关于希尔排序的问题分析排序算法之希尔排序及时间复杂度分析希尔排序时间复杂度排序算法之希尔排序 基本思想 将相距某个“增...
    99+
    2024-04-02
  • Python实现希尔排序,归并排序和桶排序的示例代码
    目录1. 前言2. 希尔排序2.1 前后切分2.2 增量切分3. 归并排序3.1 分解子问题3.2 求解子问题3.3 合并排序4. 基数排序5. 总结1. 前言 本文将介绍希尔排序、...
    99+
    2024-04-02
  • 利用Java实现一个希尔排序的方法
    利用Java实现一个希尔排序的方法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、希尔排序(Shell Sort)希尔排序(Shell Sort)是一种插入排序算法,因D...
    99+
    2023-05-31
    java 希尔排序 ava
  • C++如何实现希尔排序算法
    这篇“C++如何实现希尔排序算法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++如何实现希尔排序算法”文章吧。1.代码模...
    99+
    2023-06-26
  • C++希尔排序是什么
    本篇内容介绍了“C++希尔排序是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!希尔排序前面的算法的平均效率都不怎么好,但我们注意到直插排...
    99+
    2023-06-17
  • java 排序算法之希尔算法
    目录插入排序存在的问题简单介绍基本思想代码实现大数据量耗时测试移动法实现希尔排序移动法-大数据量耗时测试算法分析 注:学习本篇的前提是要会插入排序,数据结构与算法——排序算法-插入排...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作