排序

时间复杂度:一个算法执行所耗费的时间。

空间复杂度:运行完一个程序所需内存的大小。

一、快速排序

思路:

选择数组中间数作为基数,并从数组中取出此基数;

准备两个数组容器,遍历数组,逐个与基数比对,较小的放左边容器,较大的放右边容器;

递归处理两个容器的元素,并将处理后的数据与基数按大小合并成一个数组,返回。

二、冒泡排序

思路:

比较相邻的元素,第一个比第二个大,就交换它们;

对每组相邻的元素做同样的工作,除了最后一个;

重复以上步骤,直到排序完成。


改进版本:

思路:传统冒泡排序中每一趟排序操作只能找到一个最大值或最小值,我们考虑利用在每趟排序中进行正向和反向两遍冒泡的方法一次可以得到两个最终值(最大者和最小者) , 从而使排序趟数几乎减少了一半。


动图演示:

三、选择排序

思路:

在未排序的数组中找到最小的元素,存放到排序序列的起始位置

再从剩余未排序的元素中继续寻找最小元素,然后放到已排序列表末尾。

重复上述步骤直到所有元素排序完毕。

选择动态图示:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 写在前面 个人感觉:javascript对类似排序查找这样的功能已经有了很好的封装,以致于当我们想对数组排序的时候...
    faremax阅读 3,382评论 0 1
  • JavaScript 之排序集锦 1⃣️ 快速排序 单独开辟两个存储空间 left 和 right 来存储每次递归...
    24KBING阅读 1,823评论 0 0
  • 选择排序 基本思想 将待排序数组中最小的那个数放置于序列首位,之后将数组中的剩余元素中最小的取出放置于序列末尾,之...
    hohoto阅读 1,688评论 0 0
  • 参考资料:http://web.jobbole.com/87968/ 算法的时空 时间复杂度: 一个算法执行所耗费...
    joker731阅读 2,849评论 0 1
  • 在我们的日常生活中,排序是经常会被使用到的,因此排序算法也会广泛的应用到解决日常问题上面。所有的排序算法已经上传到...
    kim_jin阅读 3,142评论 0 3

友情链接更多精彩内容