c++实现的快速排序算法
2015-12-09 17:11
495 查看
**对数组[0,n)排序**
#include <iostream> using namespace std; void qsort1(int *a,int l,int r) { if(l>=r) return; int i=l,j=r,t=a[l],temp; while(i<j) { while(i<j&&a[j]>=t) j--; while(i<j&&a[i]<=t) i++; if(i<j) { temp=a[i]; a[i]=a[j]; a[j]=temp; } } a[l]=a[i]; a[i]=t; qsort1(a,l,i-1); qsort1(a,i+1,r); } void qsort2(int *a,int l,int r) { if(l>=r) return; int i=l,j=r,t=a[l]; while(i<j) { while(i<j&&a[j]>=t) j--; a[i]=a[j]; while(i<j&&a[i]<=t) i++; a[j]=a[i]; } a[i]=t; qsort2(a,l,i-1); qsort2(a,i+1,r); } void print(int *a,int n) { cout<<"排序后的数组为:"<<endl; for(int i=0; i<n; i++) cout<<a[i]<<ends; cout<<endl<<endl<<endl; } int main() { int n,i; cout<<"输入数组元素个数(以0为结束): "; while(cin>>n&&n) { int *a=new int ; cout<<"依次输入数组元素: "; for(i=0;i<n;i++) cin>>a[i]; cout<<"使用快排算法1/0? "; cin>>i; if(i) qsort1(a,0,n-1); else qsort2(a,0,n-1); print(a,n); delete []a; cout<<"输入数组元素个数(以0为结束): "; } return 0; }
相关文章推荐
- DOMDocument redefined问题
- C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区
- 设计模式之适配器模式
- c++ 回调函数封装
- VC++ 调用 C#生成DLL的两种方法
- C++ 调用 Java 返回String类型
- 关于visual studio(vs)debug和release问题
- Hdu 4145 Cover The Enemy(大开脑洞)
- 柔性数组
- 用C语言单链表实现的一个DotA2英雄管理系统(其实我一直羞于承认这算一个系统。。)
- 纯中文C++代码,可运行
- c++输入的两种方式
- vc++给控件添加消息和函数
- 021 VS2013 C++ 行为型游戏AI
- C++primer学习:标准库特殊设施:tuple
- 回溯法解01背包问题(C语言版)
- c c++ 结构体对齐
- c语言实现猜数字小游戏
- C语言成长学习题(十八)
- MySQL Connector/C++(一)