03 2020 档案
摘要:二分搜索树结构性质,比根节点大的放到右子树,小的放到左子树,相等的去替换,依次递归,时间复杂度O^log(n)级别 当数据为有序时,时间复杂度会退化成O^n 为避免有序数据的出现 -->平衡二叉树:红黑树 template<typename Key,typename Value> class BST
阅读全文
摘要:非递归方法 //二分查找法,在有序的数组中,查找target //如果找到了target,返回相应的索引index template<typename T> int binarySearch(T arr[],int n,T target){ int l=0,r=n-1; while (l<=r) {
阅读全文
摘要:堆用在动态数据排序中非常合适 以1索引为开始节点,parent(i) = i /2,left_child (i) =2*i ; right_child(i) = 2*i +1; 最后一个非叶子节点的索引count/2 以0索引为开始节点,parent(i) = (i-1)/2, left_child
阅读全文
摘要:快速排序算法思想: 快速排序是冒泡排序的改进算法。它也是通过不断比较和移动交换来实现排序的,只不过它的实现增大了记录的比较和移动的距离,将关键字较大的元素从前面直接放到后面,关键字较小的元素直接从后面放到前面,从而减小了比较次数和交换次数。 对于近乎有序的数组,可采用起始值为数组中随机数字,否则会退
阅读全文
摘要:算法思想:首先把一个数组中的元素,按照某一方法,先拆分了之后,按照一定的顺序各自排列,然后再归并到一起,使得归并后依然是有一定顺序的 。 算法可自顶向下拆分数组也可以自底向上拆分数组合并 自底向上的归并排序有对索引依赖少的优势,对于链表来说比较适合 //自底向上的归并排序 template<type
阅读全文
摘要:算法思想:类似扑克牌的排序,先固定第0个元素,从第 1 个元素开始向前两两比较大小,然后交换位置 由于插入排序swap会导致性能下降,所以用赋值操作来代替交换达到优化的目的 性能优化思路:先固定第0个元素,从第1个元素开始,先把第1个元素复制一份保存起来,看一下此元素是否应该放在当前的位置(需要大小
阅读全文
摘要:选择排序思想: 从数组中找出第一名位置,在整体中找到最小的元素,然后与第一名交换位置,接下来在剩下的元素中,找到最小的元素,与第二名交换位置,以此类推 时间复杂度为O^n2 #include <iostream> using namespace std; template<typename T> /
阅读全文

浙公网安备 33010602011771号