设为首页 加入收藏

TOP

快速排序-c++(分别用数组和容器实现)
2015-07-24 05:53:53 来源: 作者: 【 】 浏览:6
Tags:快速 排序 分别 容器 实现
/**********************************************************************
*版权所有 (C)2014, cheng yang。
*
*文件名称:快速排序.cpp 数组实现
*内容摘要:无
*其它说明:无
*当前版本: V1.0
*作    者:cheng yang
*完成日期: 20140625
*
*  版本       修改时间     修改人           修改内容
********************************************************************
*   V1.0        20140625    cy			   创建
**********************************************************************/
#include
  
   
#include 
   
     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 
  
   
#include 
   
     using namespace std; inline void swap(int &a, int &b) { int temp = a; a = b; b = temp; } template
    
      int Partition(vector
     
      & 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
      
        void QuickSort(vector
       
        & 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
        
          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; } 
        
       
      
     
    
   
  



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇bnu 34986 Football on Table(数.. 下一篇[BZOJ 2753][SCOI2012]滑雪与时间..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: