快速排序
2017-03-10 12:22
106 查看
快速排序
基本思想:找到一个合适的位置,对于k而言。它的左边的所有元素均比他小,右边的元素均比他大。如何做到?
遍历数组,为方便直接设置k就是起始的那个元素,设置两个指针分别在头和尾,
如果进行偶数次交换(0算偶数次)那就让a[j]和k比,奇数次那就让a[i]和k比。
#include <iostream> using namespace std; void Swap(int & a, int & b) { int tmp; tmp = a; a = b; b = tmp; } void QuickSort(int a[], int s, int e) { int k = a[s]; int i = s, j = e; if(s >= e) return; while(i != j)//交换的目的是为了让k左边的元素小于k,k右边的元素大于k { while(i<j && a[j]>=k)//偶数次交换 j--; Swap(a[i], a[j]); while(i<j && a[i]<=k)//奇数次交换 i++; Swap(a[i], a[j]); } QuickSort(a, s, i-1);//k左边排 QuickSort(a, i+1, e);//k右边排 }//完了之后a[i] == k int a[] = { 93,27,30,2,8,12,2,8,30,89}; int main() { int size = sizeof(a) / sizeof(int); QuickSort(a, 0, size-1); for(int i=0; i<size; i++) cout << a[i] << ","; cout << endl; return 0; }
相关文章推荐
- 快速排序
- 快速排序详解
- 冒泡排序,快速排序,堆排序比较(转自:http://linpder.blog.163.com/blog/static/487641020082124532971/)
- 快速排序的应用
- 快速排序实现之递归与非递归
- 快速排序的时间复杂度nlogn是如何推导的??
- 数据结构实验之排序八:快速排序
- 快速排序的递归和非递归的实现
- 快速排序 quicksort 细节问题
- 浅谈算法和数据结构: 四 快速排序
- 快速排序
- 【C语言】快速排序优质算法的动态显示和字符串的快排
- PourOver – 快速筛选和排序大的数据集合
- lua 快速排序
- 快速排序
- Java/Go实现——快速排序
- 快速排序
- 算法学习--希尔和快速排序
- qsort函数(快速排序用法举例)
- 快速排序