快速排序算法(C++实现)
来源:互联网 发布:flex java 做什么的 编辑:程序博客网 时间:2024/06/06 23:50
快速排序(Quicksort)是对冒泡排序的一种改进。
快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
时间复杂度O(nlogn)
空间复杂度O(n)
void swap(double &a, double &b){ double temp = a; a = b; b = temp;}int Partition(double *number, int begin, int end){ double temp = number[end]; int ii = begin, jj = end - 1; while (true) { while (number[ii] < temp) { ii++; if (ii == end) { break; } } while (number[jj] > temp) { jj--; if (jj == begin) { break; } } if (ii < jj) { swap(number[ii], number[jj]); } else { break; } } swap(number[ii], number[end]); return ii;}void QuickSort(double* number, int begin, int end){ if (begin < end) { int q = Partition(number, begin, end); QuickSort(number, begin, q - 1); QuickSort(number, q + 1, end); }}//Sort the number with quick sort algorithm.int SortAlgHao::SortWithQick(){ int error = this->Validation(); if (error != 0) { return -1; } QuickSort(this->GetNumber(), 0, this->GetSize() - 1); return 0;}
void main(){ int n = 10; double *number = new double[10]; for (int ii = 0; ii < n; ii++) { number[ii] = rand() % 101; }
SortAlgHao sortInstance; sortInstance.SetSize(n); sortInstance.SetNumber(number);
sortInstance.SortWithQick();
}
0 0
- 排序算法(C实现)--------- 快速排序
- 快速排序算法实现(C++)
- 快速排序算法(C & Java 实现)
- 快速排序算法实现(C版)
- 快速排序算法(C语言实现)
- 快速排序算法(c#)实现
- 算法 - 快速排序(C#)
- 快速排序算法(C)
- 《算法导论》8、快速排序实现(C++)
- 快速排序算法-C语言实现 (转)
- QUicKSort 快速排序算法 c实现
- 快速排序C语言算法实现
- c语言实现快速排序算法
- 纯c实现快速排序算法
- 快速排序算法的c语言实现
- 快速排序算法的C/C++ 实现
- 快速排序算法的C语言实现
- 算法导论C语言实现: 快速排序
- Git——Day2(git软件下载及工作流程)
- Oracle常用的数据字典
- 动态规划:凑硬币(中级:动态规划思想体会)
- 业务模型;UML类图;数据模型;概念模型;面向对象模型
- Practice6_3_map_sort_by_compareStu
- 快速排序算法(C++实现)
- 远程服务器上nginx安转与基本操作(ip反向代理转发)
- Java线程——两种创建线程的方式
- listen EADDRINUSE 127.0.0.1:3000
- Median of Two Sorted Arrays
- 局域网中抓到NBNS数据包
- 《剑指Offer》替换空格(将字符串中的空格替换为%20)
- mysql 性能-数据类型篇
- uri 与url的区别