2009年4月26日星期日

QuickSort 快速排序

O(∩_∩)O~~~~ 这几天终于有放假了~~

这是我第一次写 Blog , 还请大家多多关照~~~~

前阵子在上课时,自己写出了一个自认很不错的排序算法,

现在就放出来给大家看看写得好不好

写的这个排序算法原理来自 QuickSort 快速排序:

1) 从数列中选出一个基点

2) 比这个基点大的放在基点后面, 比基点小的放在基点前面

3) 重新排序完后,以这个基点为准把数列分为两半,

再把这两半分别从第一步开始进行下去,直到全部排序完.

这是一张演示快速排序过程的图片----



下面就是我自己写出来的 QuickSort 快速排序

注:我是用 C++ 写的




第二个参数 beg较低的下标 , 第三个参数 end较高的下标




第一个元素定为基点,变量 m 相当于指示中点的位置,
比较完后就会把 基点和中点 互相转换

除基点外,比基点的都会被提到 第m位,每次都会把 m加1

最后,13行中的 swap() 就把基点移到 第m-1位,
因为第m位开始的都是比基点大的数.



14,15行的都是递归函数.

14行把基点前的数据进行比较
15行把基点后的数据进行比较




这个函数就把两个元素的值互相交换
需要注意的是得用指针传递.


^_^ 这就是我写出的快速排序,比较简单,不难理解.


没有评论:

发表评论