/**********************************************************************
*版权全部 (C)2014, cheng yang。
*
*文件名:高速排序.cpp 数组实现
*内容摘要:无
*其他说明:无
*当前版本号: V1.0
*作 者:cheng yang
*完毕日期: 20140625
*
* 版本号 改动时间 改动人 改动内容
********************************************************************
* V1.0 20140625 cy 创建
**********************************************************************/
#include<iostream>
#include <vector>
using namespace std;
inline void swap(int &a, int &b)//是取地址,是要改动数组的!!。!!
{
int iTemp = a;
a = b;
b = iTemp;
}
/**********************************************************************
*功能描写叙述:数组的划分
*输入參数:数组,数组首下标。数组尾下标
*输出參数:无
*返回值:主元下标
*其他说明:无
*改动日期 版本号号 改动人 改动内容
* --------------------------------------------------------------
*
***********************************************************************/ int Partition(int ArrayInput[],int iFirst, int iLast)
{
int iKey = ArrayInput[iLast];
int j = iFirst-1 ;
for (int i = iFirst; i != iLast; i++)
{
if (ArrayInput[i] <= iKey)
{
j++;
if (j != i)
{
swap(ArrayInput[j], ArrayInput[i]); }
}
}
swap(ArrayInput[iLast], ArrayInput[j + 1]);
return j + 1;
}
/**********************************************************************
*功能描写叙述:quick sort
*输入參数:数组。数组首下标。数组尾下标
*输出參数:无
*返回值:无
*其他说明:无
*改动日期 版本号号 改动人 改动内容
* --------------------------------------------------------------
*
***********************************************************************/
void QuickSort(int ArrayInput[],int iFirst, int iLast)
{ if (iFirst < iLast)
{
int iIndex = Partition(ArrayInput,iFirst, iLast);
QuickSort(ArrayInput, iFirst, iIndex - 1);
QuickSort(ArrayInput,iIndex + 1, iLast);
}
} /****************************************************************
*功能描写叙述: 主函数 *
*输入參数: 无 *
*输出參数: 无 *
*返回值 :无 *
*其他说明: 无 *
*改动日期 版本号号 改动人 改动内容
* ------------------------------------------------------------------
*
****************************************************************/ int main()
{
int ArrayInput[10] = { 2, 4, 1, 5, 11, 6, 9, 16, 23, 10 };
int iFirst = 0;
int iLast = 9;
QuickSort(ArrayInput,iFirst, iLast); int i = 0;
while (i < 10)
{
cout << ArrayInput[i++] << endl;
}
system("pause");
}

容器实现

#include <iostream>
#include <vector>
using namespace std; inline void swap(int &a, int &b)
{
int temp = a;
a = b;
b = temp;
} template<class T>
int Partition(vector<T>& a, int istart, int iend)
{
int ipivot = a[iend];
int i = istart - 1;
for (int j = istart; j != iend; j++)
{
if (a[j] <= ipivot)
{
i++;
if (i != j)
{
swap(a[i], a[j]);
}
}
}
swap(a[iend], a[i + 1]);
return i + 1;
} template<class T>
void QuickSort(vector<T>& a, int istart, int iend)
{
if (istart< iend)
{
int ipivot_pos = Partition(a, istart, iend);
QuickSort(a, istart, ipivot_pos - 1);
QuickSort(a, ipivot_pos + 1, iend);
} }
int main()
{
vector<int> a;
int input{ 0 };
while (cin >> input)
a.push_back(input);
int istart = 0;
int iend = a.size()-1;//输入6个数,大小是6,数组下标别忘了减1啊 QuickSort(a, istart, iend);
for (auto i = a.begin(); i != a.end(); i++)
{
cout << *i << endl;
}
system("pause");
return 0;
}
05-04 00:44