快速排序法:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据要小,然后再按此方法对这两部分数据分别进行快速排序(此过程可以用到函数递归的方法)。
#include <iostream>
#include <time.h>//引入头文件
using namespace std;
void srandData(int *, int );//用随机数初始化数组的函数
void sort(int *, int ,int );//快速排序法实现函数
void display(int *, int );//在屏幕上输出函数
int main()
{
const int N = 10;
int arr[N];
srandData(arr, N);
sort(arr, 0, N - 1);
display(arr, N);
return 0;
}
void srandData(int *a, int n)
{
srand(time(NULL));
for (int i = 0; i < n; i++)
{
a[i] = rand() % 50;//取50以下的数字
cout << a[i] << " ";
}
cout << endl;
}
void sort(int *a, int start, int end)
{
if(start >= end)
{
return ;
}
int i = start;
int j = end;
int key = a[i];//设置基准位
while(i < j)
{
while(i < j && a[j] >= key)
{
j--;
}
a[i] = a[j];
while(i < j && a[i] <= key)
{
i++;
}
a[j] = a[i];
}
a[i] = key;
sort(a, start, i - 1);//此处用到函数递归的方法
sort(a, i + 1, end);
}
void display(int *a, int n)
{
for(int i = 0; i < n; i++)
{
cout << a[i] << " ";
}
cout << endl;
}