算法06

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36264495/article/details/83999584

冒泡排序、插入排序、选择排序这三种排序算法,它们的时间复杂度都是 O( n 2 n^2 ),比较高,适合小规模数据的排序。时间复杂度为 O(nlogn) 的排序算法,归并排序和快速排序。这两种排序算法适合大规模的数据排序,比上一节讲的那三种排序算法要更常用。归并排序和快速排序都用到了分治思想,非常巧妙。我们可以借鉴这个思想,来解决非排序的问题,比如:如何在 O(n) 的时间复杂度内查找一个无序数组中的第 K 大元素?归并排序使用的就是分治思想。分治,顾名思义,就是分而治之,将一个大问题分解成小的子问题来解决。小的子问题解决了,大问题也就解决了。**分治算法一般都是用递归来实现的。分治是一种解决问题的处理思想,递归是一种编程技巧,这两者并不冲突。**快速排序算法(Quicksort),我们习惯性把它简称为“快排”。快排利用的也是分治思想。乍看起来,它有点像归并排序,但是思路其实完全不一样。快排核心思想就是分治和分区。

猜你喜欢

转载自blog.csdn.net/qq_36264495/article/details/83999584