美文网首页《iOS白话文》
白话文之快速排序

白话文之快速排序

作者: 旺仔Milk | 来源:发表于2019-03-27 17:05 被阅读6次

我是觉得快排如果你看不懂或者刚开始学的话,应该先看一下<归并排序>;
快排的核心思想也是分治,只不过是讲分治变种化;
所以先理解<归并排序>这种纯正血统的分治思想 有利于帮助你更快速的学习并理解快排

说实话,是真的不爱学算法这类的东西, 针对工作而言没啥卵用, 看不见摸不着的,但是其实 算法有算法的魅力, 也有特殊需求(比如面试), 所以既然能看到这篇文章, 说明你对算法是有需求的, 那么请静下心来,将它学会, 你可以的

最后在哔哔一句, 算法看不懂 先用电脑敲一遍,挨个地方打log,然后带着你的疑问去看log打印出来的步骤, 别看不懂就 盯着别人写的代码 也不上手实操, 引用"马士兵"的一句话"你没有王语嫣的记忆力, 做不到看一遍就会了", 所以 踏乎的打开你的IDE 老实先写两遍吧

分治思想

首先 分治 是什么?
西瓜切两半, 你一半, 我一半,咳咳..... 跑远了

分治法的精髓:
分--将问题分解为规模更小的子问题;
治--将这些规模更小的子问题逐个击破;
合--将已解决的子问题合并,最终得出“母”问题的解;

此乃分治(分而治之)
一次次呼唤你 我的1997年~~~ 咳咳..又跑远了

快排分治变种化

上面提到了分治的正统思想,而他的核心在于先分后治;
那么为什么说快排是一个变种呢? 因为快排是在先治后分再治再分

正如我说的那样:世间万物皆有套路~

先治后分就是我理解的快排的套路(这句话才是这篇文章的核心, 敲黑板了啊~)

怎么个先治再分法?
答:

  1. 先找个"基准"(pivot)将数组重新排列(治);
  2. 数组重新排列一次后在根据这个基准将数组切开(分);
  3. 重复1, 2两步直至数组排序完成

动图制作中.... 未完待续

相关文章

  • 白话文之快速排序

    我是觉得快排如果你看不懂或者刚开始学的话,应该先看一下<归并排序>;快排的核心思想也是分治,只不过是讲分治变种化;...

  • 七大排序算法之快速排序

    七大排序算法之快速排序 @(算法笔记)[排序算法, 快速排序, C++实现] [TOC] 快速排序的介绍: 快速排...

  • 1.2-交换排序-快速排序

    参考链接 交换排序:快速排序(Quick Sort) 白话经典算法系列之六 快速排序 快速搞定 快速排序是C.R....

  • 2018-07-03

    排序算法之快速排序 快速排序算法由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加...

  • 排序算法之插入排序和希尔排序(shell sort)

    插入排序(inserction sort)和希尔排序(shell sort) 相关文章 排序算法之快速排序

  • JS实现排序算法

    原文:常见排序算法之JavaScript实现 - 知乎 目录 冒泡排序 选择排序 插入排序 合并排序 快速排序 1...

  • 排序之——快速排序

    声明这是一篇引用的文章:因为觉得写得好个人对快速排序的看法:首先是因为昨天面试被问到,恰巧很久之前看的早已经忘记了...

  • 排序算法之快速排序

    排序算法之快速排序 参考自算法(第四版),快速排序 算法思想 对数组中取一个切分元素,下文简称pivot 然后使得...

  • 3.2-选择排序-堆排序

    参考链接 选择排序:堆排序(Heap Sort) 白话经典算法系列之七 堆与堆排序 堆排序与快速排序,归并排序一样...

  • WarMj:快速排序算法(Quick Soft)

    参考资料:白话经典算法系列之六 快速排序 快速搞定 代码分析

网友评论

    本文标题:白话文之快速排序

    本文链接:https://www.haomeiwen.com/subject/klazvqtx.html