C++は高速並べ替え法で一組のデータを小さいから大きいまで並べ替える
10594 ワード
≪クイック・ソート|Quick Sort|emdw≫:ソートするデータを1回のソートで独立した2つの部分に分割し、一部のすべてのデータが他の部分のすべてのデータよりも小さくなり、この方法で2つの部分のデータをそれぞれクイック・ソートします(このプロセスでは関数の再帰的な方法が使用できます).
#include
#include //
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;
}