摘要: 插入排序一般分为直接插入排序和二分插入排序。一、直接插入排序:直接插入排序又可以分为前插和后插,不过虽然是这样分,只是寻找地点的方向不一样而已。“前插”就是从头开始找合适的位置,“后插”就是从后面开始找合适的位置。直接插入排序的思想很简单,开始时,整个数组都是无序的,默认第一个数是排好序的,然后要把第二个数插入到前面,那么就要找到合适的位置插入,从当前数的前一个数$a与当前数$s进行比较,如果此时$a= 0 && $insertVal 2、后插: 插入流程: 初始状态: 17,3 ,25,14,20,(9) 第一次插入:3 ,17,25,14,(9,20) 第二次插入:3 ,1 阅读全文
posted @ 2013-09-28 19:52 独孤舞 阅读(203) 评论(0) 推荐(0)
摘要: 快排简介:快速排序是一种基于分治技术的重要排序算法,是冒泡算法的一种改进。是由东尼.霍尔所发展的一种排序算法。在平均状况下,排序n个项目要O(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快排原理:快速排序用分治的思想,将一个整串分为两个子串。左边子串中所有的数都不会大于右边子串中的数。步骤为:(1)从数组中挑选一个数作为“中轴”,(选择中轴有许多不同的策略,不过我们一般会选择数组的第一个元素)。 (2)重... 阅读全文
posted @ 2013-09-27 16:05 独孤舞 阅读(202) 评论(0) 推荐(0)
摘要: 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。排序实例初始关键字 [49 38 65 97 76 13 27 49] 第一趟排序后 13 [38 65 97 76 49 27 49] 第二趟排序后 13 27 [65 97 76 49 38 49] 第三趟排序后 13 27 38 [97 76 49 65 49] 第四趟排序后 13 27 38 49 [76 97 65 49 ] 第五趟排序后 13 27 38 49 49 [97 65 76] 第六趟排序后 13 27 38 49 49 65 阅读全文
posted @ 2013-09-26 20:21 独孤舞 阅读(209) 评论(0) 推荐(0)
摘要: 冒泡排序是非常容易理解和实现,以从小到大排序举例: 设数组长度为N。 (1)比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。 (2)这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。 (3)N=N-1,如果N不为0就重复前面二步,否则排序完成。代码实现: 1.传统的算法: $a[$j + 1]) { $temp = $a[$j]; $a[$j] = $a[$j + 1]; $a[$j + 1] = $temp; ... 阅读全文
posted @ 2013-09-25 20:11 独孤舞 阅读(212) 评论(0) 推荐(0)