中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java、PHP、Python怎么實現希爾排序

發布時間:2022-02-19 10:07:30 來源:億速云 閱讀:138 作者:iii 欄目:開發技術

這篇文章主要介紹“Java、PHP、Python怎么實現希爾排序”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Java、PHP、Python怎么實現希爾排序”文章能幫助大家解決問題。

希爾排序(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++

實例

template
void 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怎么實現希爾排序”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昭平县| 三穗县| 五台县| 郑州市| 时尚| 西充县| 许昌县| 中西区| 宾川县| 铜陵市| 温泉县| 常德市| 托里县| 柳林县| 广州市| 墨江| 潞城市| 上蔡县| 石河子市| 收藏| 高平市| 东港市| 九台市| 汝南县| 神农架林区| 富顺县| 那坡县| 肥西县| 吉林市| 德阳市| 如皋市| 齐齐哈尔市| 邯郸县| 女性| 广德县| 农安县| 什邡市| 定州市| 吉首市| 永年县| 建平县|