快速排序----QuickSort 中位数实现
2015-08-10 19:17
211 查看
注意事项:
递归函数QuickSort中最后递归调用的时候,因为 中位数的值pivot已经处于数组中的正确位置,因此 必须采用 low-1 和 low+1,这样才能不断减小递归调用时数组的长度,否则在数组中存在两个相同数据时将产生无限次的递归调用
QuickSort(data, seq, low_org, low-1); QuickSort(data, seq, low+1, high_org);
递归函数QuickSort中最后递归调用的时候,因为 中位数的值pivot已经处于数组中的正确位置,因此 必须采用 low-1 和 low+1,这样才能不断减小递归调用时数组的长度,否则在数组中存在两个相同数据时将产生无限次的递归调用
#include<iostream>
#include<string>
using namespace std;
void QuickSort(int data[], int seq[], int low, int high);
int _tmain(int argc, _TCHAR* argv[])
{
int number[10] = {4,23,9,11,5,63,5,33,8,100};
int seq[10] = {1,2,3,4,5,6,7,8,9,10};
QuickSort( number, seq, 0, 9 );
for(int i = 0; i < 10; i++)
cout << number[i] << endl;
return 0;
}
void QuickSort(int data[], int seq[], int low, int high)
{
if( low < high )
{
int pivot = data[ (low+high)/2 ];
int tmp;
//data[ (low+high)/2 ] = data[low];
//data[low] = pivot;
int low_org = low;
int high_org = high;
while( low < high )
{
while( data[high] > pivot )
high--;
while( data[low] <= pivot && low < high )
low++;
if( low < high )
{
tmp = data[low];
data[low] = data[high];
data[high] = tmp;
tmp = seq[low];
seq[low] = seq[high];
seq[high] = tmp;
}
}
//tmp = data[low];
//data[low_org] = tmp;
//data[low] = pivot;
//tmp = data[ (low_org+high_org )];
//data[ (low+high)/2 ] = data[low];
//data[low] = tmp;
QuickSort(data, seq, low_org, low-1); QuickSort(data, seq, low+1, high_org);}
}
相关文章推荐
- poj-3080 Blue Jeans
- UVa 10746 Crime Wave - The Sequel (最小费用最大流+卡精度)
- UITabBarController以及辨析UITabBarController ,UIViewController,UITableViewController
- Xcode运行后报错: this class is not key value coding-compliant for the key的原因
- UITableViewCell的重用原理
- SAPUI5是什么?Fiori告诉我们将来UI开发用哪种技术?
- iOS 3D UI——CALayer的transform扩展解析
- HDU 1242 Rescue(BFS+优先队列)
- iOS UITableView行高自行扩展
- PAT 1017. Queueing at Bank (25)
- [] == ![]为什么是true
- iOS基本控制-UINavigationController 传统的价值观,代理传统价值观,正向传统价值观,反传统的价值观
- 【读书笔记】iOS-开发技巧-UILabel内容模糊的原因
- UIScrollView offset in UINavigationController
- 【读书笔记】iOS-开发技巧-UILabel内容模糊的原因
- iOS编程——通过UUID和KeyChain来代替Mac地址实现iOS设备的唯一标示(OC版)
- 【译】使用Espresso进行UI测试
- poj 1458 Common Subsequence(lcs模板)
- StringBuilder操作
- String、StringBuilder、StringBuffer