快排
文章平均质量分 83
yang20141109
这个作者很懒,什么都没留下…
展开
-
非递归版本的快速排序
快速排序:每次选择一个枢轴,比枢轴大的元素放在数组的右半部分,比枢轴小的元素放在数组的左半部分。然后递归的进入数组的左右两半部分。如果要用非递归来实现,我们需要用栈来保存数组左右两半部分的边界。代码如下:int partition(vector &nums, int start, int last){ int val = nums[last]; while (start < last) {原创 2016-07-21 16:13:30 · 397 阅读 · 0 评论 -
单链表进行快速排序
单链表进行快速排序:选择尾元素作为枢轴,根据枢轴值把链表划分为两部分,前半部分值小于枢轴值,后半部分值大于枢轴值,划分函数的返回值为指向排好序链表枢轴前一个元素的指针。这个指针有可能是空指针,我们需要做特殊判断。在快排函数中,我们需要对空指针做特殊处理。以下是完整版代码://对单向链表进行快速排序#include#includeusing namespace std;//链表数据结构s原创 2016-04-14 16:30:26 · 858 阅读 · 0 评论 -
快速排序
快速排序是对冒泡排序的一种改进。它的基本思想是,通过一趟排序将待排序数组分割成独立的两部分,其中一部分元素均比另一部分元素的值要小,则可以分别对这两部分元素继续进行排序,以达到整个数组有序,在代码实现中,我们选择最后一个元素作为枢轴。用枢轴把数组元素分割成两部分。平均时间复杂度为o(nlogn)。#include#includeusing namespace std;int part原创 2015-10-09 15:52:13 · 377 阅读 · 0 评论