久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Python3希爾排序

 開源優(yōu)測 2021-12-09
聲明
        本公眾號所有內(nèi)容,,均屬微信公眾號: 開源優(yōu)測  所有,任何媒體,、網(wǎng)站或個人未經(jīng)授權(quán)不得轉(zhuǎn)載,、鏈接、轉(zhuǎn)貼或以其他方式復(fù)制發(fā)布/發(fā)表,。已經(jīng)本公眾號協(xié)議授權(quán)的媒體,、網(wǎng)站,在使用時必須注明"稿件來源微信公眾號:開源優(yōu)測",,違者本公眾號將依法追究責(zé)任,。

希爾排序

概述

希爾排序(Shell's Sort)是插入排序的一種又稱“縮小增量排序”(Diminshing Increment Sort),是直接插入排序算法的一種更高效的改進版本,。

希爾排序是非穩(wěn)定排序算法,。

該方法因D.L.Shell于1959年提出而得名,。

希爾排序是把記錄按下標(biāo)的一定增量分組,對每組使用直接插入排序算法排序,;

隨著增量逐漸減少,,每組包含的關(guān)鍵詞越來越多,當(dāng)增量減至1時,,整個文件恰被分成一組,,算法便終止。

基本過程

希爾排序?qū)儆诓迦腩惻判?是將整個有序序列分割成若干小的子序列分別進行插入排序,。

排序過程:

  1. 先取一個正整數(shù)d1<n,,把所有序號相隔d1的數(shù)組元素放一組,組內(nèi)進行直接插入排序,;

  2. 然后取d2<d1,,重復(fù)上述分組和排序操作;

  3. 直至di=1,,即所有記錄放進一個組中排序為止,。

時間成本

希爾排序是按照不同步長對元素進行插入排序,當(dāng)剛開始元素很無序的時候,,步長最大,,所以插入排序的元素個數(shù)很少,速度很快,;

當(dāng)元素基本有序了,,步長很小,插入排序?qū)τ谟行虻男蛄行屎芨摺?/p>

所以,,希爾排序的時間復(fù)雜度會比o(n^2)好一些,。

代碼

# -*- coding:utf-8 -*-

__author__ = "苦葉子"

import random

''' 公眾號:開源優(yōu)測 '''

# 隨機生成1-10之間無序序列整數(shù)數(shù)據(jù)
def generator(): random_data = [] for i in range(0, 10): random_data.append(random.randint(1, 1000)) return random_data

# 希爾排序
def shell_sort(data_list): # 序列長度 length = len(data_list) # 步長,這個數(shù)據(jù)大家可以修改下,,查看排序過程 step = 2 # 分組 group = int(length / step) print("gourp: ", group) while group > 0: # 遍歷分組,,對所有分組進行排序 for i in range(0, group): j = i + group
           # 對分組進行排序 while j < length: k = j - group key = data_list[j] while k >= 0: if data_list[k] > key: data_list[k + group] = data_list[k] data_list[k] = key k = k - group j = j + group group = int(group / step) return data_list

if
__name__ == "__main__": print("開源優(yōu)測-積微速成計劃基本功") # 生成隨機無序數(shù)據(jù) random_data = generator() # 打印無序數(shù)據(jù) print(random_data) # 排序 length = len(random_data) sorted_data = shell_sort(random_data) # 打印排序結(jié)果 print(sorted_data)

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多