所谓分治:字面上的意思就是分而治之。
举个较形象例子(跟题目无关):如果现在耕种田并不是一亩亩的,而是几十亩田形成一块,啥都种,棉花、水稻、小麦全都种在一起,那么会极度不好管理,每一种农作物都有特定的管理方式,也需要打一些特定的药,所以不能放在一起管理。这个时候就要把这些农作物区分开来,分别种植,这也算是分而治之,现代语言即:分开管理。
归并排序算是分治中比较典型的一个例子,时间复杂度很低,但是我个人认为并没有冒泡、选择等排序算法好理解,且代码量比这几类算法多不少,但是时间复杂度低很多很多。冒泡、插入也是最稳定的算法。
归并时间复杂度:O(n log n)
冒泡、选择、插入:O(n2)
其余排序不多做解释了,主要是介绍归并.
归并排序的原理(从小到大):
有数列:5,6,1,3,4
第一次分:①5,6 ②1,3,4 (或前半部分多一个,问题不大),分成如上两块
①分成5 6 两块(发现每块少于一个,不需要往下继续分)
②1,3 4分成这两块
将1,3分为 1 3两块(无需继续做)