输入10个数,用递归算法实现快速排序
5个回答
展开全部
#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");
}
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");
}
展开全部
#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"); }
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个是快速排序算法函数,输入输出楼主自定吧。
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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
}
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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询