Python排序搜索基本算法之希尔排序实例分析
作者:littlethunder 发布时间:2023-03-27 14:06:07
标签:Python,算法,希尔排序
本文实例讲述了Python排序搜索基本算法之希尔排序。分享给大家供大家参考,具体如下:
希尔排序是插入排序的扩展,通过允许非相邻的元素进行交换来提高执行效率。希尔排序最关键的是选择步长,本程序选用Knuth在1969年提出的步长序列:1 4 13 40 121 364 1093 3280 。。。后一个元素是前一个元素*3+1,非常方便选取,而且效率还不错。代码如下:
#-*- coding: UTF-8 -*-
def shellSort(seq):
length=len(seq)
inc=0
while inc<=length/3:
inc=inc*3+1
print(inc)
while inc>=1:
for i in range(inc,length):
tmp=seq[i]
for j in range(i,0,-inc):
if tmp<seq[j-inc]:
seq[j]=seq[j-inc]
else:
j+=inc
break
seq[j-inc]=tmp
inc//=3
if __name__=='__main__':
print("脚本之家测试结果:")
seq=[8,6,4,9,7,3,2,-4,0,-100,99]
shellSort(seq)
print(seq)
运行结果:
PS:这里再为大家推荐一款关于排序的演示工具供大家参考:
在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具:
http://tools.jb51.net/aideddesign/paixu_ys
希望本文所述对大家Python程序设计有所帮助。
来源:http://blog.csdn.net/littlethunder/article/details/9472055


猜你喜欢
- 先来回顾一下栈和队列的基本概念:相同点:从"数据结构"的角度看,它们都是线性结构,即数据元素之间的关系相同。不同点:栈(
- 通常文本设置要不在wxml中设置,再要不就是通过weml绑定在js中设置文字。wxml<view > <text>我
- 本文实例讲述了Python自动发送邮件的方法。分享给大家供大家参考,具体如下:python发邮件需要掌握两个模块的用法,smtplib和em
- Unsafe code是一种绕过go类型安全和内存安全检查的Go代码。大多数情况,unsafe code是和指针相关的。但是要记住使用uns
- jQuery 1.4 源码 449 行(core.js 431 行),判断是否为函数的方法如下(思路来源于 Douglas Crockfor
- 决策树之ID3算法及其Python实现,具体内容如下主要内容决策树背景知识决策树一般构建过程ID3算法分裂属性的选择ID3算法流程及其优缺点
- Neo4j(Nosql之一)是一个高性能的图数据库(不支持分布式), 在社交关系中经常用到。关于Neo4j的介绍,网上多的是,
- 详见代码如下: import threading import time import os import subprocess def g
- <html> <body> &nbs
- 前言:最近某个时间开始,特别留意了一下Web标准中柱状图,也就是英文中的bar graph的实现。虽然实现方法各异,效果不尽相同,但是总体来
- 1、查看死锁1)用dba用户执行以下语句select username,lockwait,status,machine,program fr
- 一、创建测试表CREATE TABLE [dbo].[Student]( [id] [int] NOT NULL,
- 【OpenCV】⚠️高手勿入! 半小时学会基本操作 ⚠️ 图像轮廓概述OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大.
- 本文向大家分享了几段Python生成数字图片的代码,喜欢的朋友可以参考。具体如下:最终版本# -*- coding:utf-8 -*-fro
- 直接以数值固定大小根据屏幕大小固定大小禁止最大化按钮MainWindow.setWindowFlags(QtCore.Qt.WindowMi
- 背景:线上机器,需要过滤access日志,发送给另外一个api期初是单进程,效率太低,改为多进程发送后,查看日志中偶尔会出现异常错误(忘记截
- 一、程序运行1.效果展示 - 轮廓描绘看轮廓描绘效果:2.效果展示 - 颜色填充衣服和裤子颜色填充效果:二、实现过程1.绘图数据下载获取地址
- 一、Time 包中定时器函数go v1.20.4定时函数:NewTicker,NewTimer 和 time.After 介绍time 包中
- 测试代码:输出简单的ul li1.asp代码如下:<% response.write "<ul>" r
- 废话不多说了,上代码吧:import threadingimport requestsimport timeimport osclass M