简单算法(二)快速排序

# 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
今日推荐