This commit is contained in:
1AoB 2024-04-29 01:19:36 +08:00
parent 3d60548efe
commit d3092e77e0
2 changed files with 19 additions and 0 deletions

View File

@ -489,3 +489,22 @@ int main()
}
```
总结一下:
O(n^2)就是两层循环:for+for,或者for+while
- 冒泡排序:O(n^2),第一次将第一大的浮出水面,第二次将第二大的浮出水面,...
- 选择排序:O(n^2),第一次拿到第一小元素的下标,第二次拿到第二小元素下标...
- 插入排序:O(n^2),将未排好顺序的部分,一个元素一个元素的插入到排好顺序的部分,
比如举个例子:将x插入到[0,j]的部分,每次在遇到x<q[j],q就往后移动一位,直到x不再小于为止,那个位置就是x应该插入的位置
- 快速排序:平均情况下为O(n log n)最坏情况下为O(n^2),==先治后分==,取一个标准,比如说中间值,我设置为x,不断将数组分为<=x的部分,和>=x的部分,双指针从两边走,走不动时(不满足q[i]<x<q[j]),就交换
- 归并排序:O(n log n),分治思想,==先分后治==,分成[l,mid]和[mid+1,r],
,看成两个数组,每次取每个数组的最小值,加入到临时数组中,
最后在把临时数组放到最终的数组中(临时数组每次递归都是从下标0开始的)
![1714324656728](图片/1714324656728.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB