常见的算法整理
2022-04-05 22:13:05 0 举报
AI智能生成
登录查看完整内容
算法整理:选择排序,冒泡排序,归并排序,插入排序,希尔排序,快速排序,堆排序,计数排序,桶排序,基数排序
作者其他创作
大纲/内容
算法
选择排序
时间复杂度
平均
O(n^2)
最好
最坏
空间复杂度
O(1)
稳定性
不稳定
定义
选择排序是给每个位置选择当前元素最小的,比如给第一个位置选择最小的,在剩余元素里面给第二个元素选择第二小的,依次类推,直到第n-1个元素,第n个元素不用选择了,因为只剩下它一个最大的元素了。那么,在一趟选择,如果一个元素比当前元素小,而该小的元素又出现在一个和当前元素相等的元素后面,那么交换后稳定性就被破坏了。举个例子,序列5 8 5 2 9,我们知道第一遍选择第1个元素5会和2交换,那么原序列中两个5的相对前后顺序就被破坏了,所以选择排序是一个不稳定的排序算法。
冒泡排序
O(n)
稳定
比较相邻的元素。如果第一个比第二个大,就交换他们两个。 [1] 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 [1] 针对所有的元素重复以上的步骤,除了最后一个。 [1] 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 [1]
归并排序
O(n*logn)
插入排序
直接插入排序是将无序序列中的数据插入到有序的序列中,在遍历无序序列时,首先拿无序序列中的首元素去与有序序列中的每一个元素比较并插入到合适的位置,一直到无序序列中的所有元素插完为止。对于一个无序序列arr{4,6,8,5,9}来说,我们首先先确定首元素4是有序的,然后在无序序列中向右遍历,6大于4则它插入到4的后面,再继续遍历到8,8大于6则插入到6的后面,这样继续直到得到有序序列{4,5,6,8,9}。
希尔排序
O(n^1.3)
快速排序
O(n^logn)
快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。
堆排序
计数排序
O(n^k)
一、找到数组中最大值和最小值二、建立一个max-min+1的数组空间,每个元素初始值为0三、遍历要排序的无序数组比如说,第一个数是2,那么数组下标为2的元素加1第二个数是3,那么数组下标为3的元素加1以此类推四、到最后,我们就得到了一个数组,数组中每一个值,代表了下标值在排序数组内出现的次数。五、直接遍历我们得到的数组,输出下标值,元素的值为多少,就输出几次。
桶排序
O(n+k)
根据待排序集合中最大元素和最小元素的差值范围和映射规则,确定申请的桶个数;遍历待排序集合,将每一个元素移动到对应的桶中;对每一个桶中元素进行排序,并移动到已排序集合中。
基数排序
基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。
0 条评论
回复 删除
下一页