网站网页制作图片素材,公司宣传片制作,iis里如何装php网站,wordpress打开置顶文章没用关于时间复杂度#xff1a;
平方阶 (O(n2)) 排序 各类简单排序#xff1a;直接插入、直接选择和冒泡排序。线性对数阶 (O(nlog2n)) 排序 快速排序、堆排序和归并排序。O(n1)) 排序#xff0c; 是介于 0 和 1 之间的常数。希尔排序。线性阶 (O(n)) 排序 基数排序#xff0c… 关于时间复杂度
平方阶 (O(n2)) 排序 各类简单排序直接插入、直接选择和冒泡排序。线性对数阶 (O(nlog2n)) 排序 快速排序、堆排序和归并排序。O(n1§)) 排序§ 是介于 0 和 1 之间的常数。希尔排序。线性阶 (O(n)) 排序 基数排序此外还有桶、箱排序。
关于稳定性
稳定的排序算法冒泡排序、插入排序、归并排序和基数排序。
不是稳定的排序算法选择排序、快速排序、希尔排序、堆排序。
名词解释
n数据规模
k“桶”的个数
In-place占用常数内存不占用额外内存
Out-place占用额外内存
稳定性排序后 2 个相等键值的顺序和排序之前它们的顺序相同
目录
二分查找法
冒泡排序算法
选择排序算法
插入排序算法
快速排序算法
希尔排序算法
归并排序算法
堆排序
计数排序
桶排序算法
基数排序算法 二分查找法
二分查找要求线性表必须采用顺序存储结构而且表中元素按关键字有序排列。
算法原理
又叫折半查找要求待查找的序列有序。每次取中间位置的值与待查关键字比较如果中间位置
的值比待查关键字大则在前半部分循环这个查找的过程如果中间位置的值比待查关键字小
则在后半部分循环这个查找的过程。直到查找到了为止否则序列中没有待查的关键字。 冒泡排序算法
它重复地走访过要排序的元素列依次比较两个相邻的元素如果顺序如从大到小、首字母从Z到A错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换也就是说该元素列已经排序完成 选择排序算法
选择排序是一种简单直观的排序算法无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。 插入排序算法
通过构建有序序列对于未排序数据在已排序序列中从后向前扫描找到相应的位置并插入。 快速排序算法
对冒泡算法的一种改进。是指通过一趟排序将要排序的数据分割成独立的两部分其中一部分的所有数据都比另外一部分的所有数据都要小然后再按此方法对这两部分数据分别进行快速排序。整个排序过程可以递归进行以此达到整个数据变成有序序列。 希尔排序算法
希尔排序是插入排序的一种又称“缩小增量排序”是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法 归并排序算法
归并排序是建立在归并操作上的一种有效稳定的排序算法该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并得到完全有序的序列即先使每个子序列有序再使子序列段间有序。若将两个有序表合并成一个有序表称为二路归并。 堆排序
堆排序Heapsort是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构并同时满足堆积的性质即子结点的键值或索引总是小于或者大于它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。分为两种方法
大顶堆每个节点的值都大于或等于其子节点的值在堆排序算法中用于升序排列小顶堆每个节点的值都小于或等于其子节点的值在堆排序算法中用于降序排列计数排序
计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序计数排序要求输入的数据必须是有确定范围的整数。 计数排序的特征 当输入的元素是 n 个 0 到 k 之间的整数时它的运行时间是 Θ(n k)。计数排序不是比较排序排序的速度快于任何比较排序算法。由于用来计数的数组C的长度取决于待排序数组中数据的范围等于待排序数组的最大值与最小值的差加上1这使得计数排序对于数据范围很大的数组需要大量时间和内存。例如计数排序是用来排序0到100之间的数字的最好的算法但是它不适合按字母顺序排序人名。但是计数排序可以用在基数排序中的算法来排序数据范围很大的数组。 通俗地理解例如有 10 个年龄不同的人统计出有 8 个人的年龄比 A 小那 A 的年龄就排在第 9 位,用这个方法可以得到其他每个人的位置,也就排好了序。当然年龄有重复时需要特殊处理保证稳定性这就是为什么最后要反向填充目标数组以及将每个数字的统计减去 1 的原因。 算法的步骤如下 1找出待排序的数组中最大和最小的元素 2统计数组中每个值为i的元素出现的次数存入数组C的第i项 3对所有的计数累加从C中的第一个元素开始每一项和前一项相加 4反向填充目标数组将每个元素i放在新数组的第C(i)项每放一个元素就将C(i)减去1 桶排序算法
桶排序也叫箱排序工作的原理是将数组分到有限数量的桶子里。每个桶子再个别排序有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候桶排序使用线性时间Θn。但桶排序并不是比较排序他不受到 O(n log n) 下限的影响。
基数排序算法
基数排序radix sort属于“分配式排序”distribution sort又称“桶子法”bucket sort或bin sort顾名思义它是透过键值的部份资讯将要排序的元素分配至某些“桶”中藉以达到排序的作用基数排序法是属于稳定性的排序其时间复杂度为O (nlog(r)m)其中r为所采取的基数而m为堆数在某些时候基数排序法的效率高于其它的稳定性排序法。