问题标题: 酷町堂:qsort的用法萌新求助QAQ

0
0
已解决
屠景瑞
屠景瑞
新手光能
新手光能

求qsort的用法。

蟹蟹各位dalao.

 

屠景瑞在2018-10-14 20:27:08追加了内容

是从大到小的

屠景瑞在2018-10-14 20:28:52追加了内容

int main()里怎么写

屠景瑞在2018-10-21 12:58:02追加了内容

@陆麟瑞

@酷町喵~o( =∩ω∩= )o~ 

@栾峻岩 

@all people


0
0
0
夏天
夏天
中级守护
中级守护

 

void qsort(int a[],int i,int j)

 

{

 

int l,r;

 

int mid;

 

l=i;r=j;

 

mid=a[(l+r)/2];

 

while(i<=j)

 

{

 

while(mid>a[i])i++;

 

while(mid<a[j])j--;

 

if(i<=j)

 

{

 

swap(a[i],a[j]);

 

i++;j--;

 

}

 

}

 

if(i<r)qsort(a,i,r);

 

if(j>l)qsort(a,l,j);

 

}

0
袁翊凡
袁翊凡
新手光能
新手光能

加上这句话;

sort(数组名,数组名+数组的范围);//这是下标从0开始的;

sort(数组名+1,数组名+数组的范围+1);//这是下标从1开始的;

其余的全部按照数组输入输出来进行

例如:

int a[100];

int n;

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]<<" ";

 

0
袁翊凡
袁翊凡
新手光能
新手光能

奥,还以为是STL里的sort大法,话说你还用qsort干啥

0
赵逸凡
赵逸凡
初级启示者
初级启示者

1761这道题吧,这道题要用快排
 

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

从小到大排序函数(其实是递归)

我要回答