输入10个数,用递归算法实现快速排序

 我来答
LaceTao
推荐于2018-07-15 · TA获得超过348个赞
知道答主
回答量:227
采纳率:0%
帮助的人:255万
展开全部
#include<iostream>
using namespace std;
int a[10];
void qs(int s,int e)
{
int x=a[s],l=s,r=e;//以第一个数为参照做比较
if(l>=r)return;
while(l<r)
{
while(l<r&&a[r]>=x)
r--; //不小于分界值的留在右边,遇到小于的停止
a[l]=a[r];
while(l<r&&a[l]<=x)
l++; //小于分界值的留在左边,遇到不小于的停止
a[r]=a[l];
}
a[r]=x;
qs(s,r-1);
qs(r+1,e);//递归
}
int main()
{
int i;
for(i=0;i<10;i++)
cin>>a[i]; //输入数组元素
qs(0,9); //执行排序函数
for(i=0;i<10;i++) //输出排序后结果
cout<<a[i];
system("pause");
}
yxtmp3
2011-04-21 · TA获得超过151个赞
知道答主
回答量:98
采纳率:0%
帮助的人:60.7万
展开全部
#include<iostream> using namespace std; int a[10001]; void qs(int s,int e) { int x=a[s],l=s,r=e;//以第一个数为参照做比较 if(l>=r)return; while(l<r) { while(l<r&&a[r]>=x) r--; //不小于分界值的留在右边,遇到小于的停止 a[l]=a[r]; while(l<r&&a[l]<=x) l++; //小于分界值的留在左边,遇到不小于的停止 a[r]=a[l]; } a[r]=x; qs(s,r-1); qs(r+1,e);//递归 } int main() { int i,n; cin>>n; //输入要排序的数组元素个数即 数组长度 for(i=0;i<n;i++) cin>>a[i]; //输入数组元素 qs(0,n-1); //执行排序函数 for(i=0;i<n;i++) //输出排序后结果 cout<<a[i]; system("pause"); }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fnwzk
2011-04-21 · TA获得超过494个赞
知道小有建树答主
回答量:400
采纳率:0%
帮助的人:435万
展开全部
这个是快速排序算法函数,输入输出楼主自定吧。
void qsort(int v[], int left, int right) {
int i, last;
void swap(int v[], int i, int j);
if (left >= right)
return ;
swap(v, left, (left + right)/2);
last = left;
for (i=left+1; i<=right; i++)
if (v[i]<v[left])
swap(v, ++last, i);
swap(v, left, last);
qsort(v, left, last-1);
qsort(v, last+1, right);
}

void swap(int v[], int i, int j) {
int temp;
temp = v[i];
v[i] = v[j];
v[j] = temp;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友fcd769a29
2011-04-21 · TA获得超过140个赞
知道小有建树答主
回答量:632
采纳率:0%
帮助的人:406万
展开全部
int a[10];

qsort(a, 10);

void qsort(int* arr,int n)
{
if(n <= 1)
{
return;
}
if(arr[n] > arr[n-1])
{
int temp = arr[n];
arr[n] = arr[n-1];
arr[n-1] = temp;
}
qsort(arr, n -1);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2011-04-21 · TA获得超过230个赞
知道小有建树答主
回答量:107
采纳率:0%
帮助的人:97.2万
展开全部
#include<iostream>
using namespace std;

int a[10];

void qsort(int l,int r)
{
int i=l,j=r,m=a[l],p;
do
{
for(;a[i]>m;i++);
for(;a[j]<m;j--);
if(i<=j)
{
p=a[i];
a[i]=a[j];
a[j]=p;
i++;
j--;
}
}while(i<=j);
if(l<j)
qsort(l,j);
if(i<r)
qsort(i,r);
}

int main()
{
for(int i=1;i<=10;cin>>a[i],i++);
qsort(1,10);
for(int i=1;i<=10;cout<<a[i]<<endl,i++);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式