问题标题: 酷町堂:1761

0
0
已解决
朱智霖
朱智霖
新手守护
新手守护

两道作业题都有毛病!

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
using namespace std;
int n,k,a[10000];
int main()
{
    cin>>n;
    for(int i=0;i<n;i++) cin>>a[i];
    sort(a,a+n);
    for(int i=0;i<n;i++) cout<<a[i]<<' '; 
    return 0;
}

 


0
已采纳
李祈乐
李祈乐
新手光能
新手光能

1.数组范围定义下了,而且要比原范围大一些,

2.sort对数组排序时要将起始和末尾下标加1,即:

sort(a+1,a+n+1);

 

0
贾文卓
贾文卓
高级光能
高级光能

数组长度定义小了,应该为:

int a[100010];

 

贾文卓在2018-07-13 13:10:53追加了内容

你的快排调用没有问题,因为你的数组下标是从0开始的。

0
0
范孝晗
范孝晗
中级守护
中级守护

htrshjdthnsrhjndbdtdrk    pioutrtyuiudtyhjhggbgbghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhkmmvbnmnbd

0
杨子逸
杨子逸
新手天翼
新手天翼

函数:

int a[120000];
void qsort(int a[],int l,int r)
{
    int mid=a[(l+r)/2],i=l,j=r;
    while(i<=j)
    {
        while(a[i]<mid)
        i++;
        while(a[j]>mid)
        j--;
        if(i<=j)
        {
            swap(a[i],a[j]);
            i++;
            j--;
        }
    }
    if(i<r)
        qsort(a,i,r);
    if(l<j)
        qsort(a,l,j);
}

主程序:

int n;
    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]<<' ';
    }
0
0
我要回答