摘要:
#排序算法总结 ##排序稳定性 概念:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。 ###选择排 阅读全文
posted @ 2022-07-20 14:42
小肉包i
阅读(23)
评论(0)
推荐(0)
摘要:
#不基于比较的排序 ##不基于比较排序的意思 前面文章中提到的排序都是数组中的数字相互比较大小进行排序,所以叫基于比较的排序,本文中所要讲的排序是不比较的排序,所以叫不基于比较的排序。 ##计数排序 ###算法思想 一个整数数组arr,里面所代表的数字大小有一个确定的范围,例如:年龄。人年龄的范围可 阅读全文
posted @ 2022-07-20 14:30
小肉包i
阅读(120)
评论(0)
推荐(0)
摘要:
#O(NlogN)的排序 ##master公式 T(N) = aT(N/b) + O(N^d) b:子过程的样本量 a:子过程的计算次数 O(N^d):除了递归之外操作的时间复杂度 满足如上公式的程序都可以根据master公式计算时间复杂度: log(b,a) > d :时间复杂度为O(N^log( 阅读全文
posted @ 2022-07-20 12:58
小肉包i
阅读(61)
评论(0)
推荐(0)
摘要:
#对数器 ##对数器的作用 对数器可以说是验证算法是否正确的一种方式。尤其是在笔试的时候,用贪心算法写出的程序,暂时无法用数学公式严格推导证明,只能通过大量的数据集验证算法的正确性。而大量的数据集当中要包括各种情况,各个方面都要考虑到,对我们自己来说,有时会考虑不周,而且又是在时间紧迫的情况下。所以 阅读全文
posted @ 2022-07-18 16:36
小肉包i
阅读(46)
评论(0)
推荐(0)
摘要:
#二分法 ##二分法的常规用法:在一个有序数组中查找某个数是否存在 在数组arr中查找num,如果找到则返回下标,没找到返回-1。 int binarySearch(vector<int> arr, int num) { int left = 0; int right = arr.size() - 阅读全文
posted @ 2022-07-18 16:31
小肉包i
阅读(21)
评论(0)
推荐(0)
摘要:
#异或运算 ##异或运算法则 异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1)。 ##异或运算的性质 1)0⊕N=N,N⊕N=0; 2) 异或运算满足交换律和结合律,即 a⊕b=b⊕a, (a⊕b)⊕c=a⊕(b⊕c); ##异或运算的性质在交换两个数的swap函数 阅读全文
posted @ 2022-07-18 15:10
小肉包i
阅读(127)
评论(0)
推荐(0)
摘要:
#选择排序 ##选择排序的复杂度 时间复杂度O(N^2),额外空间复杂度O(1)。 ##选择排序的C++代码实现 void selectionSort(vector<int> &arr) { if (arr.size() < 2) { return; } for (int i = 0; i < ar 阅读全文
posted @ 2022-07-18 14:23
小肉包i
阅读(12)
评论(0)
推荐(0)
浙公网安备 33010602011771号