#include
using namespace std;
void qsort(int a[10010],int l,int r){
int i,j;
//int a[10010]={};
if (l <= r) return;
i=l;j=r;
int mid=(l+r)/2;
do{
while(a[i]<=a[mid]){
i++;
if(i==r) break;
}
while(a[j]>=a[mid]){
j--;
if(j==l) break;
}
swap(a[i],a[j]);
}while(i<=j);
a[l]=a[j];
l=j;
a[j]=a[mid];
j=mid;
qsort(a,l,j-1);
qsort(a,j+1,r);
}
int main(){
int n,a[10010]={};
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
qsort(a,1,n);
for(int i=1;i<=n;i++) cout<
return 0;
}
题目描述
输人一个数N和N个数.输出从大
到小排序后的数列.
输入格式
第一行是一个数N.
(1<=N<=10000)
接下来一行有N个32位整数.
输出格式
排好序的数用空格隔开
#include<iostream>
#include <iomanip>
using namespace std;
int main()
{
int n,a[100];
cout <<"请输入有几个数字"<<endl;
cin>>n;
for (int i=0;i<n;i++)
{
cout<<"请输入第"<<i+1<<"个数的的值"<<endl;
cin>>a[i];
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n-1-i;j++)
{
if(a[j]<a[j+1])
{
int t;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
cout << "从大到小为;" << endl;
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
从大到小排序
你题目的解答代码如下:
#include <iostream>
using namespace std;
void qsort(int a[10010], int l, int r)
{
int i, j;
//int a[10010]={};
if (l >= r) // 改成>=
return;
i = l;
j = r;
int x = a[l];
do
{
while (a[i] >= x)
{
i++;
if (i == r)
break;
}
while (a[j] <= x)
{
j--;
if (j == l)
break;
}
if (i<j)
swap(a[i], a[j]);
} while (i < j);
a[l] = a[j];
a[j] = x;
qsort(a, l, j - 1);
qsort(a, j + 1, r);
}
int main()
{
int n, a[10010] = {0}; //加0
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
qsort(a, 1, n);
for (int i = 1; i <= n; i++)
cout << a[i] << " ";
return 0;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!