这次的快速排序我觉得是所有排序算法中最简单也是比较好理解的一种了,而且对于完全无序序列来说效率还挺高,可谓必备排序算法。
#include <iterator>
#include <stdlib.h>
#include <time.h>
#include <iostream>
using namespace std;
void QuickSort(int *a,int head,int tail)
{
int i = head;
int j = tail-1;
bool flag = true;
if(head >= tail-1)
return ;
while(i < j)
{
if(a[i] > a[j])
{
a[j] ^= a[i];
a[i] ^= a[j];
a[j] ^= a[i];
flag = !flag;
}
if(flag)
{//右移动
i++;
}
else
{//左移动
j--;
}
}
QuickSort(a,head,i);
QuickSort(a,j,tail);
}
#define MAXSIZE 10
int main(int argc, char* argv[])
{
int a[MAXSIZE];
srand(time(0));
for(int i = 0;i < MAXSIZE;++i)
{
a[i] = rand()%MAXSIZE;
}
cout<<"原数列:";
copy(a,a+MAXSIZE,ostream_iterator<int>(cout," "));
QuickSort(a,0,MAXSIZE);
cout<<endl<<"新数列:";
copy(a,a+MAXSIZE,ostream_iterator<int>(cout," "));
cout<<endl;
return 0;
}