您的位置:首页 > 其它

我的C语言快速排序方法

2008-10-20 18:28 225 查看
// test0.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdlib.h>
#include <time.h>
#include <iostream>
#include <algorithm>
#include <iterator>
//随机选取中间数
template<typename T>
int select(T data[], int low, int high)
{
int middle=low+rand()%(high-low);
std::swap(data[middle], data[low]);
int i=low+1;
int j=high;
while ( i<=j )
{
while ( data[i]<data[low] )
++i;
while ( data[low]<data[j] )
--j;
if (i<j)
{
std::swap(data[i], data[j]);
++i;
--j;
}
else
++i;
}
std::swap(data[low], data[j]);
return j;
}
//快速排序函数
template <typename T>
void QuickSorter (T data[], int low, int high)
{
if ( low<high )
{
int n=select(data, low, high);
QuickSorter(data, low, n-1);
QuickSorter(data, n+1, high);
}
}
//快速排序包装器
template <typename T>
void QuickSort(T data[], int size)
{
srand(time(NULL));
QuickSorter(data, 0, size-1);
}
//测试例程
int _tmain(int argc, _TCHAR* argv[])
{
int data[10000];
for ( int i=0; i<10000; ++i )
{
data[i]=rand()%1000;
}
QuickSort(data, 10000);
std::copy(data, data+10000, std::ostream_iterator<int>(std::cout, " "));
return 0;
}
此教程来源于97xxoo教程网(www.97xxoo.org)查看完整的教程请点:http://www.97xxoo.org/article/4/2008/20081020069.shtml
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: