# include<iostream>
using namespace std;
void kuaipai(int a[], int x, int y);//声明kuaipai函数
int main()
{
int a[] = { 1, 2, 2, 2, 3, 4, 6, 4, 5 };
int len = sizeof(a) / sizeof(a[0]);
cout << "初始数组";
for (int i = 0; i < len; i++)
cout << a[i] << " ";
cout << endl;
kuaipai(a, 0, len - 1);//引用kuaipai函数
cout << "排序后:";
for (int j=0; j < len; j++)
cout << a[j] << " ";
cout << endl;
system("pause");
return 0;
}
void kuaipai(int k[], int m, int n)
{
if (m < n)
{
int i = m, j = n, x = k[m];
while (i < j)
{
while (i < j && k[j] >= x)//从右向左找小于x的数
j--;
if (i < j)
k[i++] = k[j];
while (i < j&&k[i] < x)//从左向右找大于x的数
i++;
if (i < j)
k[j--] = k[i];
}
k[i] = x; //递归
kuaipai(k, m, i - 1);//快排x的左边
kuaipai(k, i + 1, n);//快排x的右边
}
}
この例では、小さいものから大きいものへの並べ替えを実装しています。大きいものから小さいものへ並べ替えたい場合は、「<」を「>」に変更できます。配列を初期化せずに自分で入力したい場合は、コードを次のように置き換えることができます。
int a[100];
int n;
cin >> n;
for(int i = 0;i < n;i ++)
cin >> a[i];
ご質問がございましたら、以下にコメントしてください。お答えします