问题标题: 酷町堂:sort

0
0

0
已采纳
黄品翔
黄品翔
初级光能
初级光能
#include<bits/stdc++.h>
#include<vector>
using namespace std;
int a[101],N;
void f(int t[],int l,int r)//t是一个数组,从l到r排序 
{
    int i=l,j=r,mid=t[(l+r)/2];
    while(i<=r)//为了分成左右两组 
    {
        while(mid>t[i])
        {
            i++;
        }
        while(mid<t[j])
        {
            j--;
        }
        if(i<=j)
        {
            swap(t[i],t[j]);
            i++;
            j--;
        }
    }
    if(l<j)
    {
        f(t,l,j);
    }
    if(l<r)
    {
        f(t,i,r);
    }
    return ;
}
int main()
{
    cin>>N;
    for(int i=1;i<=N;i++)
    {
        cin>>a[i];
    }
    f(a,1,N);
    for(int i=1;i<=N;i++)
    {
        cout<<a[i]<<" ";
    }
    return 0;
}

是这个不?

0
黄子扬
黄子扬
初级天翼
初级天翼

???什么sort??

请您讲清楚,

不然

我可能

sort(a,a+n);

送给您

0
赵朗
赵朗
高级光能
高级光能

emmm

sort

头文件#include<algorithm>

输入n个数字//你别跟我说你不会

sort(要排序的数组的起始地址,结束的地址)

如果要实现从大到小等其他类型排序就加一个cmp函数

例如:

 1 #include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4 bool cmp(int a,int b);
 5 main(){
 6   //sort函数第三个参数自己定义,实现从大到小 
 7   ...
 8   sort(a,a+n,cmp);
 9   ...
10     ...
11 }
12 //从大到小函数
13 bool cmp(int a,int b){
14   return a>b;
15 }
0
杜文博
杜文博
资深守护
资深守护

1.sort要头文件#include<algorithm>

2.如果你是从0开始,用sort(a,a+n) 从小到大;如果你是从1开始,用sort(a+1,a+1+n) 从小到大

3.如果你想从大到小,

 bool cmp(int a,int b)
{
  cong 0kaishi :return a>b;
 }

从0开始:sort(a,a+n,cmp);

从1开始:sort(a+1,a+1+n,cmp);

0
0
我要回答