暂无个人介绍
2022年05月
冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
实现和理解简单。
时间复杂度是O(n^2),排序元素多时效率比较低。
数据已经基本有序,且数据量较小的场景。
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法的一个非常典型的应用。递归的把当前序列分割成两半(分割),在保持元素顺序的同时将上一步得到的子序列集成到一起(归并),最终形成一个有序数列。
1.性能好且稳定,时间复杂度为O(nlogn) 。 2.稳定排序,适用场景更多。
大数据量且期望要求排序稳定的场景。
插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序。
1.查找==》二分查找。 2.排序==》中序遍历。
二叉查找树是在二叉树的基础上增加了以下几个条件: 如果左子树不为空,则左子树上所有节点的值均小于根节点的值。 如果右子树不为空,则右子树上所有节点的值均大于根节点的值。 左、右子树也都是二叉查找树。
快速排序使用分治法策略来把一个序列分为较小和较大的2个子序列,然后递归地排序两个子序列,以达到整个数列最终有序。
1.性能较好,时间复杂度最好为O(nlogn),大多数场景性能都接近最优。 2.原地排序,时间复杂度优于归并排序。
数组:
1.部分场景,排序性能最差为O(n^2)。 2.不稳定排序。
大数据量且不要求排序稳定的场景。
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。
1.性能较好,时间复杂度为O(nlogn)。 2.时间复杂度比较稳定。 3.辅助空间复杂度为O(1)。
数据量大且数据呈流式输入的场景。
数列元素是整数,当k不是很大且序列比较集中时适用。
1.规格化:指数位不是全零,且不是全1时,有效数字最高位前默认增加1,不占用任何比特位。 2.非规格化:指数位是全零时,有效数字最高位前默认为0。 3.特殊值:指数全为1,有效数字全为0时,代表无穷大;有效数字不为0时,代表NaN(不是数字)。