数据结构
一一一一一一一一一一
用大把时间迷茫,在几个瞬间成长
展开
-
冒泡排序
一、冒泡排序重复的遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有在需要交换,也就是说该数列已经排序完成。二、冒泡排序算法的运作如下(1)比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个(2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数(3)针对所有的元素重复...原创 2019-01-18 15:59:08 · 91 阅读 · 0 评论 -
选择排序
一、选择排序首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已盘排序序列的末尾。以此类推,直到所有元素均排序完成选择排序的主要优点与数据移动有关。如果某个元素为与正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,他们当中至少有一个将被移动到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。在...原创 2019-01-18 16:21:19 · 177 阅读 · 1 评论 -
插入排序
一、插入排序通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间二、插入排序分析def insert_sort(alist): #从第二个位置,即下标为1的元素开始向前插入 for i in range(1,len(alist)): ...原创 2019-01-18 16:49:14 · 193 阅读 · 0 评论 -
希尔排序
一、希尔排序也称为缩小增量排序,是直接插入排序算法的一种更高的改进版本。希尔排序是非稳定排序算法。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止二、希尔排序分析def shell_sort(alist): n = len(alist) #初始步长 ...原创 2019-01-18 17:58:55 · 99 阅读 · 0 评论 -
快速排序
一、快速排序又称为交换排序,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,一次达到整个数据变成有序序列步骤为:(1)从数列中挑选出一个元素,称为“基准”(2)重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准大的摆在基准的后面(相同的数可以放到任...原创 2019-01-18 21:24:22 · 199 阅读 · 0 评论