第三章 排序

P35 习题 3.1

在这里插入图片描述

#include <iostream>
#include <algorithm>

using namespace std;

const int Max = 1000;
int arr[Max];

int main(){
   // freopen("D:\\case.txt", "r", stdin);
    int casenum;
    cin>>casenum;
    int maxnum = 0;
    for (int i=0;i<casenum;i++){
        cin>>arr[i];
        if (arr[i]>maxnum){maxnum = arr[i];}
    }
    sort(arr,arr+casenum);
    cout<<maxnum<<endl;
    if (casenum == 1){cout<<"-1"<<endl;}
    else{
        for (int i=0;i<casenum-1;i++){
            cout<<arr[i]<<' ';
        }
    }
    return 0;
}

P35 习题 3.2

在这里插入图片描述

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

bool compareodd(int x,int y){
    return x>y;
}

bool compareeven(int x,int y){
    return x<y;
}

int main(){
    //freopen("D:\\case.txt", "r", stdin);
    vector <int> odd;
    vector <int> even;
    int tmp;
    for (int i=0;i<10;i++){
        cin>>tmp;
        if (tmp&1){odd.push_back(tmp);}
        else {even.push_back(tmp);}
    }
    bool flag = false;
    sort(odd.begin(),odd.end(),compareodd);
    sort(even.begin(),even.end(),compareeven);
    for (int i=0;i<odd.size();i++){if(flag){cout<<' ';}flag = true;cout<<odd[i];}
    for (int i=0;i<even.size();i++){cout<<' '<<even[i];}
    return 0;
}

P36 习题 3.4

未完成

P35 习题 3.3

在这里插入图片描述

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>

using namespace std;

struct mouse{
    string color;
    int weight;
};

bool compare(mouse m1,mouse m2){
    return m1.weight>m2.weight;
}

int main(){
    //freopen("D:\\case.txt", "r", stdin);
    mouse mo[100];
    int casenum;
    cin>>casenum;
    for (int i=0;i<casenum;i++){
        cin>>mo[i].weight;
        cin>>mo[i].color;
    }
    sort(mo,mo+casenum,compare);
    for (int i=0;i<casenum;i++){
        cout<<mo[i].color<<endl;
    }
    return 0;
}

P36 习题 3.5

在这里插入图片描述

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>

using namespace std;

struct casenumber{
    int x;
    int y;
};

bool comparenum(casenumber c1,casenumber c2){
    if (c1.x!=c2.x){
        return c1.x<c2.x;
    }
    else {return c1.y<c2.y;}
}

int main(){
    //freopen("D:\\case.txt", "r", stdin);
    casenumber c[1100];
    int casenum;
    cin>>casenum;
    for (int i=0;i<casenum;i++){
        cin>>c[i].x;
        cin>>c[i].y;
    }
    sort(c,c+casenum,comparenum);
    cout<<c[0].x<<' '<<c[0].y;
    return 0;
}

P40 习题 3.6

在这里插入图片描述

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

bool judge(int arr[3]){
    if (arr[1]>arr[0]&&arr[1]>arr[2]){return true;}
    else if (arr[1]<arr[0]&&arr[1]<arr[2]){return true;}
    else {return false;}
}

int main(){
    //freopen("D:\\case.txt","r",stdin);
    //int num;
    //cin>>num;
   // while(num--){
        int temp[3];
        vector <int> arr;
        int casenum;
        cin>>casenum;
        bool flag = false;
        int x;
        for (int i=0;i<casenum;i++){cin>>x;arr.push_back(x);}
        for (int i=0;i<casenum;i++){
            if (i == 0){
                if(arr[i]!=arr[i+1]){
                    if (flag){cout<<' ';}
                    cout<<i;
                    flag = true;
                }
            }
            else if (i == casenum-1){
                if(arr[i]!=arr[i-1]){
                    if (flag){cout<<' ';}
                    cout<<i;
                    flag = true;
                }
            }
            else{
                temp[0] = arr[i-1];
                temp[1] = arr[i];
                temp[2] = arr[i+1];
                if (judge(temp)){
                    if (flag){cout<<' ';}
                    cout<<i;
                    flag = true;
                }
            }
        }
       // cout<<endl;
    //}
    return 0;
}

P40 习题 3.7

在这里插入图片描述

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>

using namespace std;

int locatechar(char x,vector <char> str_char){
    for (int i=0;i<str_char.size();i++){
        if (x == str_char[i]){return i;break;}
    }
    return -1;
}

int main(){
    //freopen("D://case.txt","r",stdin);
    string casestring;
    cin>>casestring;
    vector <char> str_char;
    vector <int> str_count;
    vector <char> result;
    for (int i=0;i<casestring.size();i++){
        int index = locatechar(casestring[i],str_char);
        if(index!=-1){
            str_count[index]++;
        }
        else{
            str_char.push_back(casestring[i]);
            str_count.push_back(1);
        }
    }
    for (int i=0;i<str_count.size();i++){
        if (str_count[i]>1){
            result.push_back(str_char[i]);
        }
    }
    for (int i=0;i<result.size();i++){
        bool flag = false;
        for (int j=0;j<casestring.size();j++){
            if (casestring[j] == result[i]){if(flag){cout<<',';}cout<<result[i]<<':'<<j;flag = true;}
        }
        cout<<endl;
    }
    return 0;
}

发布了12 篇原创文章 · 获赞 0 · 访问量 149

猜你喜欢

转载自blog.csdn.net/weixin_42562498/article/details/104485008