title: 快速排序法(quick sort) tags: 分治法(divide and conquer method) grammar_cjkRuby: true 算法原理 分治法的基本思想 :将原问题分解为若干个更小的与原问题相似的问题,然后递归解决各个子问题,最后再将各个子问题的解组合成原问 ...
分类:
编程语言 时间:
2017-11-14 23:24:16
阅读次数:
260
这里我们介绍一些常用的排序方法,排序是一个程序员的基本功,所谓排序就是对一组数据,按照某个顺序排列的过程。 充效率看 冒泡排序法<选择排序法<插入排序法 排序分两大类: 内部排序法 交换式排序法 冒泡法 基本思想: 冒泡排序法 冒泡排序法 案例: 12345678910111213141516171 ...
分类:
编程语言 时间:
2017-11-10 12:48:24
阅读次数:
268
这是一种比较高效的排序法 具体是找一个基准值,这个值是数组中的任意一个,有的人喜欢挑中间的,其实随便 使用splice删除掉基准元素,获得新的数组 将新数组的值和基准值进行比较,如果小于基准值集中放左边数组,大于基准值放右边数组(升序) 然后采用递归就能获得最终的数组 举个例子 一个数组是[1,3, ...
分类:
编程语言 时间:
2017-10-10 13:04:44
阅读次数:
179
1. 冒泡排序法 * 思路分析:法如其名,就是像冒泡一样,每次从数组当中 冒一个最大的数出来。 * 比如:2,4,1 // 第一次 冒出的泡是4 * 2,1,4 // 第二次 冒出的泡是 2 * 1,2,4 // 最后就变成这样 $arr=array(1,43,54,62,21,66,32,78,3 ...
分类:
编程语言 时间:
2017-06-07 17:00:53
阅读次数:
198
--------------------siwuxie095 快速排序法 它的工作原理如下: 它采用了一种分治的策略,利用分治法可将快速排序分为三步: 第一步:在数据集之中,选择一个元素作为 "基准" 第二步:所有小于 "基准" 的元素,都移到 "基准" 的左边;所有大于 "基准" 的元素,都移到 ... ...
分类:
编程语言 时间:
2017-05-28 21:38:56
阅读次数:
229
这个排序方法的时间复杂度为O(nlogn),最坏时间复杂度为O(n^2),所以说是属于所有排序方法中比较高效率的一种了。 这种排序方法的基本思想是: 先找到一个区间中的一个基准点,然后找到这个区间右边所有小于这个基准点的元素都放到基准点左边,还有这个区间左边所有左边大于这个基准点的元素都放到基准点右 ...
分类:
编程语言 时间:
2017-05-06 20:01:19
阅读次数:
239
常用的排序方法有:冒泡排序、快速排序、选择排序、插入排序、归并排序,除此之外,还有基数排序、鸡尾酒排序、桶排序、鸽巢排序、希尔排序等,这里着重介绍下前半段列举的几种常见方法的实现。 1. 冒泡排序法: 2. 快速排序法: 3. 选择排序法:每次寻找序列中的最小值,然后放在最末尾的位置。 4. 插入排 ...
分类:
编程语言 时间:
2017-03-18 15:33:49
阅读次数:
250
1、算法出现的背景 之前讲的,当我们排序的是一个近乎有序的序列时,快速排序会退化到一个O(n^2)级别的排序算法,而对此的改进就是 引入了随机化快速排序算法;但是当我们的排序的是一个数值重复率非常高的序列时,此时随机化快速排序算法就不再起作用 了,而将会再次退化为一个O(n^2)级别的排序算法,那为 ...
分类:
编程语言 时间:
2017-03-10 22:25:48
阅读次数:
275
冒泡法: 输出结果: 快速排序法: 运行结果: 在写快速排序法时,出现了很多错误 1、在中间写for循环代码时,当时考虑到尽量减少计算,提高效率,写成了 运行时出现: 原因为$str[$i+1]出现键值溢出。所以最厚修改成: 错误消失。 2、忘记数组的使用规则,给$_left、$_right,两个均 ...
分类:
编程语言 时间:
2017-03-08 01:13:36
阅读次数:
289
前提:分别用冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中的值按照从小到大的顺序进行排序。 $arr(1,43,54,62,21,66,32,78,36,76,39); 1. 冒泡排序 思路分析:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的 ...
分类:
编程语言 时间:
2017-02-23 11:20:23
阅读次数:
195