1交换排序 1.1交换排序 冒泡排序(从前向后冒泡) 1.2交换排序 选择排序(选择排序第i个位置的元素跟后面的其他元素比较,找到比第i个元素小且最小的元素,与它进行交换) 2插入排序 2.1直接插入排序(带有标志位的) 2.2直接插入排序(不带有标志位) 2.3希尔排序 2.4归并排序 "参考博文 ...
分类:
编程语言 时间:
2020-04-21 13:22:09
阅读次数:
68
(1)时间频度:一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。 (2)时间复杂度:算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记 ...
分类:
编程语言 时间:
2020-04-20 14:04:58
阅读次数:
66
插入排序 直接插入排序,折半插入排序,2-路插入排序,希尔排序 快速排序 冒泡排序,快速排序(冒泡排序改进), 选择排序 简单选择排序,树形选择排序,堆排序 归并排序 基数排序 ...
分类:
编程语言 时间:
2020-04-20 13:41:41
阅读次数:
63
希尔排序(升序为例) 希尔排序的思想:将序列看成一个矩阵,根据一个步长序列将原序列分成m个列,逐列进行排序,直到列数变为1列为止 因此希尔排序的时间复杂度与步长关系密切。 希尔本人给出的步长序列为: n / (2^k),其中n为序列元素的个数,k = 1,取整数 举例: 序列元素有32个,那步长序列 ...
分类:
编程语言 时间:
2020-04-17 21:53:17
阅读次数:
78
简述 插入排序是一种简单直观的排序方法,其基本思想在于每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中,直到全部记录插入完成。插入排序主要有三个算法:直接插入排序、折半插入排序和希尔排序。 直接插入排序 算法思想 直接插入排序的简单思想就是不断地将一个元素插入到一个有序的序列中, ...
分类:
编程语言 时间:
2020-04-16 19:17:00
阅读次数:
68
概念 同直接插入排序,多段后移。也叫增量排序。 基本思想 先取一个小于n的数d1作为第一个增量,把文件的全部记录分组 所有距离为d1的倍数的记录放在同一个组中 现在各组内进行直接插入排序 然后取第二个增量d2<d1重复上述的分组和排序,直至所取得增量 = 1,即将所有的记录放在同一组中进行直接插入排 ...
分类:
编程语言 时间:
2020-04-14 12:56:38
阅读次数:
81
希尔排序 关键变量:增量gap gap:初始值为len(alist) // 2 1.表示分组的组数 2. 每一组数据之间的间隔 插入排序就是增量为1的希尔排序 ...
分类:
编程语言 时间:
2020-04-12 20:22:42
阅读次数:
72
1.希尔排序 希尔排序是对直接插入排序的一种改进,基本思想是隔一定间隔取元素组成一组元素,然后对这组元素进行直接插入排序,所有元素排序完一次后。间隔减少,再进行同样的操作,直到间隔变为1,这时就是直接插入排序了,因为经过前面的步骤,元素大多数都是有序了,直接插入排序,对有序序列的效率是很高的。 2. ...
分类:
编程语言 时间:
2020-04-12 16:53:51
阅读次数:
86
[TOC] 各种排序算法时间复杂度及空间复杂度对比 Timsort与其他比较排序算法时间复杂度(time complexity)的比较 空间复杂度(space complexities)比较 各种排序算法 同等硬件条件下,对相同长度的的列表排序,所有时常如下: 1.python内置方法sorted( ...
分类:
编程语言 时间:
2020-04-10 00:38:40
阅读次数:
84
前言 希尔排序是对插入排序的改进,引入维基百科的说明: 希尔排序是基于插入排序的以下两点性质而提出改进方法的: 1. 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到 "线性排序" 的效率 2. 但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位 原文链接 "希尔排序" ),本 ...
分类:
编程语言 时间:
2020-04-10 00:37:31
阅读次数:
77