簡易アルゴリズム (2) クイックソート

# 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];
ご質問がございましたら、以下にコメントしてください。お答えします

おすすめ

転載: blog.csdn.net/samxiaoguai/article/details/80201293
おすすめ