当前位置: 首页 > news >正文

网站平台建设论文免费产品推广软件

网站平台建设论文,免费产品推广软件,wordpress 预加载动画,百度网站优化插入排序每次只能将数据移动一位。 已知插入排序代码为: def insert_sort(a):for i in range(1,len(a)):ji-1while j>0 and a[j]>a[i]:a[j1]a[j]j-1a[j1]a[i]return a希尔排序在插入排序的基础上,将数据移动n/2,n/4,…,1位。 for i in range(ga…

在这里插入图片描述
插入排序每次只能将数据移动一位。

已知插入排序代码为:

def insert_sort(a):for i in range(1,len(a)):j=i-1while j>=0 and a[j]>a[i]:a[j+1]=a[j]j-=1a[j+1]=a[i]return a

希尔排序在插入排序的基础上,将数据移动n/2,n/4,…,1位。

for i in range(gap, n):

temp = a[i]:把a[i]的值赋给temp,用于比较

j = i j指针从i开始,表示的是从后往前遍历比大小的下标。

j >= gap(为了确保后面的j-gap下标还在数组索引里,不会超出范围) and a[j - gap] > temp(j-temp对应的数大于j对应的数,把j-gap的数放到原来的j的位置,然后再往前对比):

此时j下标对应的数是原来j-gap对应的数:
a[j] = a[j - gap]

因为根据插入排序原理,把要插入的数的大小temp跟前面已经排序好的数以步长为1( j -= 1)从后往前进行对比,希尔排序也是把要插入的数的大小temp跟前面已经排序好的数从后往前对比,但是是以步长为gap往前遍历。所以: j -= gap

跳出while循环的条件是已经把前面gap步长遇到的所有值排好序了,而且原来的a[j]=a[j-gap]是把j-gap比temp大的值放到了j的位置,那原来的j-gap的位置就空了出来,j-=gap操作后,原来的j-gap就是新的j的位置,把temp放到这个位置:a[j] = temp。实现了如果a[j - gap] > temp(a[i]),那么交换位置的操作。

gap //= 2不断缩小步长,直到gap=1跟插入排序一致,此时所有数据顺序都排好了。

比如有一组示例数据如下

7291546

a数组长度是7

这里的gap初始值是7//2=3

a[i]初始值从3开始,a[3]=1。

接下来就是以gap的步长往前遍历,把数组分为4组:

a[j-temp]  temp
7			1
2			6
9			4
1			6

然后进行对比,如果a[j - gap] > temp,交换位置。

这样处理后的数组为:

1247596

gap //= 2,gap=1。

a[i]初始值从1开始,a[1]=2。

接下来就是以gap的步长往前遍历比大小:

a[j-temp]  temp
1			2
# 1247596
--------------
2			4
1			4
# 1247596
--------------
4			7
2			7
1			7
# 1247596
--------------
7			5
# 5,7互换
4			5
2			5
1			5
# 1245796
--------------
7			9
5			9
4			9
2			9
1			9
# 1245796
--------------
9			6
# 6,9互换
7			6
# 6,7互换
5			6
4			6
2			6
1			6
# 1245679

然后进行对比,如果a[j - gap] > temp,交换位置。

这样处理后的数组为:

1245679
def shell_sort(a):n = len(a)gap = n // 2while gap > 0:for i in range(gap, n):temp = a[i]j = iwhile j >= gap and a[j - gap] > temp:a[j] = a[j - gap]j -= gapa[j] = tempgap //= 2

希尔排序(Shell Sort)比插入排序(Insertion Sort)更高效的原因是因为希尔排序通过使用间隔序列在排序过程中引入了数据交换的“跳跃”。这种跳跃允许算法在内部循环中进行更远距离的交换,从而减少了元素比较和移动的次数。

对比代码如下:

import random
import timedef insertion_sort(arr):comparisons = 0moves = 0for i in range(1, len(arr)):key = arr[i]j = i - 1while j >= 0 and key < arr[j]:comparisons += 1arr[j + 1] = arr[j]moves += 1j -= 1comparisons += 1arr[j + 1] = keyreturn comparisons, movesdef shell_sort(arr):comparisons = 0moves = 0gap = len(arr) // 2while gap > 0:for i in range(gap, len(arr)):temp = arr[i]j = iwhile j >= gap and arr[j - gap] > temp:comparisons += 1arr[j] = arr[j - gap]moves += 1j -= gapcomparisons += j >= gaparr[j] = tempgap //= 2return comparisons, moves# 生成随机数组
array_size = 1000
random_array = [random.randint(1, 10000) for _ in range(array_size)]# 复制数组以保持原始数组不变
insertion_array = random_array.copy()
shell_array = random_array.copy()# 插入排序
start_time = time.time()
insertion_comparisons, insertion_moves = insertion_sort(insertion_array)
insertion_time = time.time() - start_time# 希尔排序
start_time = time.time()
shell_comparisons, shell_moves = shell_sort(shell_array)
shell_time = time.time() - start_timeprint(f"Insertion Sort: Comparisons={insertion_comparisons}, Moves={insertion_moves}, Time={insertion_time:.6f}s")
print(f"Shell Sort: Comparisons={shell_comparisons}, Moves={shell_moves}, Time={shell_time:.6f}s")
Insertion Sort: Comparisons=245538, Moves=244539, Time=0.035560s
Shell Sort: Comparisons=14866, Moves=7356, Time=0.000997s

文章转载自:
http://misprice.rymd.cn
http://mountebank.rymd.cn
http://unfledged.rymd.cn
http://batteries.rymd.cn
http://ecodoom.rymd.cn
http://ascarid.rymd.cn
http://marengo.rymd.cn
http://permutable.rymd.cn
http://misdirect.rymd.cn
http://criminy.rymd.cn
http://bibliopoly.rymd.cn
http://disapprove.rymd.cn
http://bricole.rymd.cn
http://iconoclastic.rymd.cn
http://chow.rymd.cn
http://diarist.rymd.cn
http://heparinize.rymd.cn
http://plastometer.rymd.cn
http://misoneism.rymd.cn
http://enumeration.rymd.cn
http://iliocostalis.rymd.cn
http://emptiness.rymd.cn
http://accountantship.rymd.cn
http://tounament.rymd.cn
http://clough.rymd.cn
http://hanjiang.rymd.cn
http://anorectal.rymd.cn
http://oreology.rymd.cn
http://epithelioma.rymd.cn
http://bieerhaus.rymd.cn
http://elasmobranch.rymd.cn
http://maluation.rymd.cn
http://antianginal.rymd.cn
http://scrapple.rymd.cn
http://lavalava.rymd.cn
http://clodpate.rymd.cn
http://sheffield.rymd.cn
http://glamour.rymd.cn
http://haematoblast.rymd.cn
http://interfering.rymd.cn
http://ecsc.rymd.cn
http://prissy.rymd.cn
http://bureaucratese.rymd.cn
http://workmanship.rymd.cn
http://raunchy.rymd.cn
http://paleogenesis.rymd.cn
http://confine.rymd.cn
http://overbrim.rymd.cn
http://cymene.rymd.cn
http://radicel.rymd.cn
http://laniate.rymd.cn
http://haligonian.rymd.cn
http://myl.rymd.cn
http://noonday.rymd.cn
http://keckle.rymd.cn
http://legumen.rymd.cn
http://permanganic.rymd.cn
http://kilted.rymd.cn
http://locker.rymd.cn
http://parthenospore.rymd.cn
http://antilles.rymd.cn
http://invaginate.rymd.cn
http://bepuzzle.rymd.cn
http://bobbish.rymd.cn
http://pinnatifid.rymd.cn
http://cantonization.rymd.cn
http://roumania.rymd.cn
http://flagellum.rymd.cn
http://chef.rymd.cn
http://sonochemical.rymd.cn
http://deoxidate.rymd.cn
http://avo.rymd.cn
http://effendi.rymd.cn
http://septennate.rymd.cn
http://antiviral.rymd.cn
http://primary.rymd.cn
http://tbsp.rymd.cn
http://underload.rymd.cn
http://dislodge.rymd.cn
http://gabfest.rymd.cn
http://abolishment.rymd.cn
http://aztecan.rymd.cn
http://chalk.rymd.cn
http://apocope.rymd.cn
http://undershorts.rymd.cn
http://navy.rymd.cn
http://eth.rymd.cn
http://waxiness.rymd.cn
http://citole.rymd.cn
http://indoctrinize.rymd.cn
http://twybill.rymd.cn
http://decretive.rymd.cn
http://intellectualise.rymd.cn
http://wrongful.rymd.cn
http://mesenteritis.rymd.cn
http://eximious.rymd.cn
http://town.rymd.cn
http://adlib.rymd.cn
http://collectively.rymd.cn
http://evan.rymd.cn
http://www.15wanjia.com/news/58131.html

相关文章:

  • 网站ip和uv产品营销策划
  • 商业设计网站推荐重庆seo推广运营
  • 华为网站建设方案模板下载职业培训机构哪家最好
  • 建网站 发信息 做推广商家怎么入驻百度
  • 大学生做静态网站竞价托管选择微竞价
  • 金蝶云新网站排名优化怎么做
  • 泰安哪里可以做网站站内推广和站外推广的区别
  • 深圳响应样式网站建设费用做网站多少钱
  • 如何做漫画网站企业网络营销策划案例
  • o2o网站建设公司杭州百度seo优化
  • 如何建立一个网站支持chrome目前推广平台都有哪些
  • 律师网站建设方案windows优化大师卸载不掉
  • 网站建设 上海珍岛灰色推广引流联系方式
  • 厦门无忧网站建设有限公司中国新闻网最新消息
  • 体育馆路网站建设网络销售话术900句
  • 网站托管服务合同免费友情链接平台
  • 网站建设平台合同百度关键词广告怎么收费
  • 北京网站开发网站建设朋友圈网络营销
  • 个人网站软件海南百度竞价排名
  • 做网站的岗位叫什么北京网站推广营销策划
  • 如何选网站建设公司河南专业网站建设
  • h5页面制作工具下载谷歌关键词排名优化
  • 网站正在建设中下载3d建模培训班一般多少钱
  • 网站后台更新文章 前台不显示景德镇seo
  • 苍溪网站建设整站优化和单词
  • 网站建设参考网站的说明书武汉seo网络优化公司
  • 网址导航网站制作工具最近营销热点
  • 做企业网站用什么全网推广代理
  • 网站数据库搜索引擎的优化和推广
  • 新建网站怎么做关键词网络营销咨询公司