C++ 算法之快速排序
2014-12-16 15:29
260 查看
快速排序的思想:
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
主要思路:
先从后面开始遍历找到比key值小的一个值,把这个值放到key的前面,再从前面开始遍历找比key大的值;
代码如下:
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
主要思路:
先从后面开始遍历找到比key值小的一个值,把这个值放到key的前面,再从前面开始遍历找比key大的值;
代码如下:
// QuickSort.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> using namespace std; void QuickSort(int a[], int start,int end) { if (start > end) { return; } int i = start; int j = end; int k = a[i]; while (i < j) { while (i < j && a[j] > k)//先从后面开始找小于k的值 j--; a[i] = a[j];//找到小于k的值,替换a[i] while (i < j && a[i] < k)//从前面找大于k的值 i++; a[j] = a[i];//找到大于k的值,刚才a[j]的值已经赋刚才的a[i];a[j]的值用现在找到的大于k的值填充 } a[j] = k;//最后i = j; 把k的值赋给a[i]; QuickSort(a,i+1,end); QuickSort(a,start,i-1); } int _tmain(int argc, _TCHAR* argv[]) { int a[] = {1,3,5,7,9,2,4,6,8,0}; int len=sizeof(a)/sizeof(a[0])-1; for(int i=0;i<=len;i++) { cout<<a[i]<<" "; } cout<<endl; cout<<"快速排序后:"<<endl; len=sizeof(a)/sizeof(a[0])-1; QuickSort(a,0,len); for(int i=0;i <= len;i++) { cout<<a[i]<<" "; } getchar(); return 0; }
相关文章推荐
- 【算法导论】c++实现的随机化的快速排序
- 快速排序(快排)算法的C++两种实现
- C++ 快速排序实现(算法导论)
- 【算法导论】C++源码之快速排序
- 初学算法-快速排序与线性时间选择(Deterministic Selection)的C++实现
- 《算法》C++代码 快速排序
- C++之快速排序(3)---《那些奇怪的算法》
- [算法导论] 快速排序以及最大堆的C++实现
- 算法设计之快速排序的随机化版本 (C++实现)
- 【算法和数据结构】排序(四)归并排序和快速排序(C++实现)
- 算法设计之快速排序的实现 (C++实现)
- C/C++十大经典算法之快速排序
- 【算法导论】用C++实现快速排序
- C++快速排序实现(quicksort) (算法导论)
- 算法导论:c++快速排序
- 快速排序及其改进算法C++实现
- 较高人工智能的人机博弈程序实现(多个算法结合)含C++源码
- [CodeProject每日一荐]实现Double Metaphone语音匹配算法[一]:介绍与C++实现
- C/C++常见算法收集
- [代码实例]字符串近似匹配算法 C++