
算法
文章平均质量分 78
小小学编程
这个作者很懒,什么都没留下…
展开
-
鸡尾酒排序算法详解
一、什么是鸡尾酒排序1.概念鸡尾酒排序算法又叫快乐小时排序,它基于冒泡排序算法做了一些优化。冒泡排序算法每一轮都是从左到右进行元素比较,进行单向的位置交换,鸡尾酒排序算法则是双向的元素比较和交换。2.算法原理这是一个无序数列:2、3、4、5、6、7、8、1,我们要将它按从小到大排序。按照冒泡排序算法的思想,每一轮将最大的元素移到最右边。第一轮结果第二轮结果第三轮结果第四轮结果第五轮结果第六轮结果第七轮结果可以看到该序列2到8已经是有序的,但还需进行7轮排序,而鸡尾酒算原创 2020-08-07 10:26:48 · 4450 阅读 · 0 评论 -
十大经典排序算法-基数排序算法详解
十大经典排序算法十大经典排序算法-冒泡排序算法详解十大经典排序算法-选择排序算法详解十大经典排序算法-插入排序算法详解十大经典排序算法-希尔排序算法详解十大经典排序算法-快速排序算法详解十大经典排序算法-归并排序算法详解十大经典排序算法-堆排序算法详解十大经典排序算法-计数排序算法详解十大经典排序算法-桶排序算法详解十大经典排序算法-基数排序算法详解一、什么是基数排序1.概念基数排序(Radix Sort)是将待排序序列的每个元素统一为同样位数长度的元素,位数较短的通过补0达到原创 2020-07-27 16:40:12 · 7555 阅读 · 2 评论 -
十大经典排序算法-桶排序算法详解
一、什么是桶排序1.概念桶排序(Bucket sort)是计数排序算法的升级版,将数据分到有限数量的桶子里,然后每个桶再分别排序2.算法原理这是一个无序数列:11、38、8、34、27、19、26、13,我们要将它按从小到大排序先创建5个桶,桶的区间跨度=(最大值-最小值)/桶的数量,注意,每个桶的范围都是包含最小值,不包含最大值,最后一个桶,既包含最小值,也包含最大值遍历原始序列,将序列放入桶中每个桶内部的元素分别排序遍历所有桶,将桶中元素依次输出:8、11、13、19、26、27、原创 2020-07-16 11:07:50 · 17301 阅读 · 0 评论 -
十大经典排序算法-计数排序算法详解
一、什么是计数排序1.概念计数排序(Counting sort)是一种非基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中以达到排序的效果2.算法原理给定一组取值范围为0到9的无序序列:1、7、4、9、0、5、2、4、7、3、4,建立一个长度为10的计数数组,值初始化为0遍历无序序列,将每个序列元素值对应的计数数组下标的元素加1如:第一个序列元素为1,则计数数组中下标为1的元素加1第二个序列元素为7,计数数组中下标为7的元素加1继续遍历序列,当序列遍历完毕,原创 2020-07-08 15:09:49 · 9365 阅读 · 3 评论 -
十大经典排序算法-堆排序算法详解
一、什么是堆排序1.概念堆排序(Heapsort)是利用二叉堆的概念来排序的选择排序算法,分为两种:升序排序:利用最大堆进行排序降序排序:利用最小堆进行排序2.算法原理给定一个最大堆如下图所示,以该最大堆进行演示堆排序首先,删除堆顶元素10(即最大的元素),并将最后的元素3补充到堆顶,删除的元素10,放置于原来最后的元素3的位置根据二叉堆的自我调整,第二大的元素9会成为二叉堆新的堆顶删除元素9,元素8成为最大堆堆顶删除元素8,元素7成为最大堆堆顶依次删除最大元素,直至所有原创 2020-07-01 17:01:46 · 12927 阅读 · 5 评论 -
二叉堆详解
一、什么是二叉堆二叉堆是完全二叉树或者是近似完全二叉树,它分为两个类型:最大堆最小堆最大堆是指任何一个父节点的值,都大于等于它左右孩子节点的值;最小堆是指任何一个父节点的值,都小于等于它左右孩子节点的值二、二叉堆的自我调整1.插入节点我们以下面的最小堆为例,插入元素新插入的元素为0,将新元素置于二叉堆最后一个位置我们让新元素与它的父节点比较,如果新元素小于父节点,则与父节点交换位置,否则调整结束新元素0与父节点5比较,0小于5,0与5交换位置新元素0继续与父节点2比较,0小于原创 2020-06-29 17:49:05 · 4033 阅读 · 4 评论 -
十大经典排序算法-归并排序算法详解
一、什么是归并排序1.概念归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法,归并排序对序列的元素进行逐层折半分组,然后从最小分组开始比较排序,合并成一个大的分组,逐层进行,最终所有的元素都是有序的2.算法原理这是一个无序数列:4、5、8、1、7、2、6、3,我们要将它按从小到大排序。按照归并排序的思想,我们要把序列逐层进行拆分序列逐层拆分如下然后从下往上逐层合并,首先对第一层序列1(只包含元素4)和序列2(只包含元素5)进行合并创建一个大序列,序列长度为两个小序列长度原创 2020-06-19 15:23:51 · 122745 阅读 · 27 评论 -
十大经典排序算法-快速排序算法详解
一、什么是快速排序1.概念快速排序(Quick Sort)是从冒泡排序算法演变而来的,实际上是在冒泡排序基础上的递归分治法。快速排序在每一轮挑选一个基准元素,并让其他比它大的元素移动到数列一边,比它小的元素移动到数列的另一边,从而把数列拆解成了两个部分2.算法原理这是一个无序数列:4、5、8、1、7、2、6、3,我们要将它按从小到大排序。按照快速排序的思想,我们先选择一个基准元素,进行排序我们选取4为我们的基准元素,并设置基准元素的位置为index,设置两个指针left和right,分别指向最左原创 2020-06-16 15:53:43 · 84401 阅读 · 12 评论 -
十大经典排序算法-希尔排序算法详解
一、什么是希尔排序1.概念希尔排序(Shell Sort)是把记录按下标的一定增量分组,对每组使用插入排序算法,随着增量逐渐减少,每组包含的元素越来越多,当增量减至1时,所有元素被分为一组,算法终止2.算法原理这是一个无序数列:1、5、8、4、7、2、6、3,我们要将它按从小到大排序。按照希尔排序的思想,我们先把数列进行分组排序首先,我们选择序列长度的一半4,作为增量进行分组如果所示,1和7一组,5和2一组,8和6一组,4和3一组,共四组然后,我们对每一组进行插入排序,排序后序列如下经原创 2020-06-10 14:40:37 · 12448 阅读 · 5 评论 -
十大经典排序算法-插入排序算法详解
一、什么是插入排序1.概念插入排序(Insertion Sort)是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入2.算法原理这是一个无序数列:1、5、4、2、6、3,我们要将它按从小到大排序。按照插入排序的思想,我们先指定有序序列,再将无序序列插入有序序列的相应位置将第一个元素1作为有序数据,此时有序区只有一个元素第一轮,让元素5和有序区依次比较,1<5,无需交换此时有序区有1、5两个元素第二轮,让元素4和原创 2020-06-04 14:50:01 · 12308 阅读 · 1 评论 -
十大经典排序算法-选择排序算法详解
一、什么是选择排序1.概念选择排序(Selection sort)是最简单直观的一种算法,基本思想为每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止2.算法原理这是一个无序数列:1、5、4、2、6、3,我们要将它按从小到大排序。按照选择排序的思想,我们要找到最小的元素,将它移到队首首先开始第一轮最小元素的比较先假定最小元素为第一个元素:1第一步:比较1和5,1比5小,最小元素为1第二步:比较1和4,1比4小,最小元素为1经过一轮比较后,找到1为最小的原创 2020-06-01 14:30:32 · 13860 阅读 · 0 评论 -
十大经典排序算法-冒泡排序算法详解
一、什么是冒泡排序1.概念冒泡排序(Bubble Sort)是排序算法里面比较简单的一个排序。它重复地走访要排序的数列,一次比较两个数据元素,如果顺序不对则进行交换,并一直重复这样的走访操作,直到没有要交换的数据元素为止。2.算法原理这是一个无序数列:1、5、4、2、6、3,我们要将它按从小到大排序。按照冒泡排序的思想,我们要把相邻的元素两两比较,根据大小来交换元素的位置首先开始第一轮比较第一步:比较1和5,1比5小,顺序正确,元素位置不变第二步:比较5和4,5比4大,顺序错误,交换元素位置原创 2020-05-30 10:18:51 · 23184 阅读 · 13 评论