排序算法--快速排序(C++)

  快速排序是冒泡排序的一种改进,属于交换排序,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列

    C++中可以直接调用函数qsort()对数组进行排序。

    void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *));

参数:
  1 待排序数组首地址
  2 数组中待排序元素数量
  3 各元素的占用空间大小
  4 指向函数的指针,用于确定排序的顺序                                   
#include <iostream>
#include<vector> 
using namespace std;
void Qsort(vector<int>&a, int low, int high)
{
	if (low >= high)
	{
		return;
	}
	int first = low;
	int last = high;
	int key = a[first];/*用字表的第一个记录作为枢轴*/


	while (first < last)
	{
		while (first < last && a[last] >= key)
		{
			--last;
		}


		a[first] = a[last];/*将比第一个小的移到低端*/


		while (first < last && a[first] <= key)
		{
			++first;
		}


		a[last] = a[first];
		/*将比第一个大的移到高端*/
	}
	a[first] = key;/*枢轴记录到位*/
	Qsort(a, low, first - 1);
	Qsort(a, first + 1, high);
}
int main()
{
	vector<int> num;
	int a;
	while (cin >> a)
	{
		num.push_back(a);
		if (cin.get() == '\n') break;
		
	}
	Qsort(num, 0, num.size() - 1);/*这里原文第三个参数要减1否则内存越界*/
	for (int i = 0; i < num.size(); i++)
	{
		cout << num[i] << " ";
	}
	system("pause");
	return 0;
}

posted @ 2018-03-30 20:47  依然有清风  阅读(348)  评论(0编辑  收藏  举报