冒泡和快速排序的时间复杂度_php实现快速排序,冒泡排序,插入排序以及选择排序...

冒泡排序:

代码如下:

a00010d9a4923c1513477f160becc905.png

原理:就像名字一样,每次都会冒出最大的一个数来,将该数与下一个数对比,然后进行交换位置。

结果

624162f786fbda128185edb6da5c51b5.png

选择排序:

代码如下:

23e7ab00d787b404bd89a9f1fd6350fa.png

原理:每次选择一个相应元素将其放到指定位置,假设p为最小值位置,j与i后面的位置进行比较,发现最小的则记录最小的位置。

也可以是如下代码:

f2b36f27559fa0ee576ff868831d59ed.png

原理:此方法比较简单,假设第一个元素为最大值,以后每次循环假设当前下标元素最大,将当前元素与下一元素比较即可。

结果:

1f807860202e5d9a773da4ce5265fbf7.png

插入排序:

代码如下:

a1a14c8d4bbe26952c9cb323568382d3.png

原理:每次讲一个带排序的元素,按照关键字插入到前面数据的适当位置。

6c0f973ebee5a568171f580232557124.png

                                                该图片来源网络

结果:

624162f786fbda128185edb6da5c51b5.png

快速排序:

代码:

1b68757412669aa499aa1bbe8b0fc09f.png

原理:去第一个元素作为基础参考元素,将比他大的放到右边,比他小的放到左边,然后将左右两边的数组进行递归,最后按照左,参考元素,右合并数据即可。

代码:

624162f786fbda128185edb6da5c51b5.png

结论:四种排序方法时间复杂度

直接插入排序:O(n^2),是一种稳定的排序方法。

冒泡排序:最好情况是O(n),最坏是O(n^2)

快速排序:最好情况是O(n),最坏是O(n^2)

选择排序:O(n^2),跟初始状态无关

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
冒泡排序快速排序都是常见的排序算法,它们的时间复杂度分别为$O(n^2)$和$O(n\log n)$。 冒泡排序的基本思想是:比较相邻的两个元素,如果前一个比后一个大,则交换这两个元素。这样一轮下来,最大的元素就会被交换到最后一个位置。然后再从头开始进行相邻元素的比较和交换,直到排序完成。 以下是冒泡排序的Python实现代码: ```python def bubble_sort(arr): n = len(arr) for i in range(n): for j in range(n-i-1): if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] return arr ``` 快速排序的基本思想是:选择一个基准元素,将序列中所有小于基准元素的数移到基准元素的左边,将序列中所有大于基准元素的数移到基准元素的右边,然后对左右两个子序列分别进行快速排序,最终得到一个有序序列。 以下是快速排序的Python实现代码: ```python def quick_sort(arr): if len(arr) <= 1: return arr pivot = arr[0] left = [x for x in arr[1:] if x < pivot] right = [x for x in arr[1:] if x >= pivot] return quick_sort(left) + [pivot] + quick_sort(right) ``` 可以看出,快速排序时间复杂度冒泡排序低,因为快速排序在每一轮排序中都将序列分成了两个子序列进行处理,而冒泡排序则需要进行$n$轮排序,每轮排序都要遍历整个序列。但是,在最坏情况下,快速排序时间复杂度仍然为$O(n^2)$,因为如果每次选择的基准元素都是序列中的最大或最小元素,那么就会出现这种情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值