提示:文章
文章目录
- 前言
- 一、背景
- 二、二分法
- 2.2 最坏情况下冒泡排序的比较次数
- 三、大算法之一:分治法
- 总结
前言
前期疑问:
本文目标:
二分法
一、背景
问题来源是一个题目,在A[N]字符串数组中匹配长度为M的字符串,如果有多个匹配,找到第一个就结束。时间复杂度为O(M*logN)。
自己之前写的二分法的代码:HJ107 求解立方根
二、二分法
二分法时间复杂度是O(logn)。
关于时间复杂度为log的理解:
对于复杂度为log的,我的个人理解是并不是一个完成for循环的。
2.2 最坏情况下冒泡排序的比较次数
冒泡排序在最坏情况下的比较次数为1225次。冒泡排序的基本思想是通过重复遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。这个过程重复进行直到没有元素需要交换,即数列已经排序完成。
冒泡排序的时间复杂度在最坏情况下是O(n^2),其中n是数组的长度。对于长度为50的数组,最坏情况下的比较次数可以通过公式计算:n(n-1)/2 = 50 * (50 - 1) / 2 = 1225次。
由二分法引出分治法:
三、大算法之一:分治法
还看了分治法,参考了这篇文章,但是文章中的例子没有看懂,先记录一下,分治法(总结)
源于题目:
可使用分治法求解的有(ABC)
A. 大整数乘法
B. 快速排序
C. 二分搜索
D. 冒泡排序
总结
未完待续