两种排序方法

Posted _Camille

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两种排序方法相关的知识,希望对你有一定的参考价值。

在这里插入图片描述
在这里插入图片描述

解法一

#include <iostream>
#include <vector>
#include <string>
using namespace std;
bool SortBydir(vector<string>& v)
{
    for(int i = 0;i<v.size()-1;++i)
    {
        if(v[i]<v[i+1])
            continue;
        if(v[i]>v[i+1])
            return false;
    }
    return true;
}
bool SortBylen(vector<string>& v)
{
    for(int i = 0;i<v.size()-1;++i)
    {
        if(v[i].size()<v[i+1].size())
            continue;
        else
            return false;
    }
    return true;
}
int main()
{
    int n;
    cin >> n;
    vector<string> iv;
    for(int i = 0;i<n;i++)
    {
        string s;
        cin >> s;
		iv.push_back(s);
    }
    if(SortBydir(iv)&&SortBylen(iv))
    {
        cout<<"both"<<endl;
    }
    else if(SortBydir(iv))
    {
        cout<<"lexicographically"<<endl;
    }
    else if(SortBylen(iv))
    {
        cout<<"lengths"<<endl;
    }
    else{
        cout<<"none"<<endl;
    }
    return 0;
}

解法二(利用C库字符串操作函数)

#include<iostream>
#include<string.h>
using namespace std;

int main()
{
    int n,i,j;
    int x=0,y=0;
    char a[100][100];
    cin>>n;
    for(i=0;i<n;i++){
        cin>>a[i];
    }
     for(i=0;i<n-1;i++){
        if(strlen(a[i])>strlen(a[i+1])){
            x=1;
            break;
        }
            
    }
    for(i=0;i<n-1;i++){
        if(strcmp(a[i],a[i+1])>0){
            y=1;
            break;
        }
    }
    if(x==1 && y==0)
        cout<<"lexicographically"<<endl;
    else if(x==0 && y==1)
        cout<<"lengths"<<endl;
    else if(x==0 && y==0)
        cout<<"both"<<endl;
    else
        cout<<"none"<<endl;
    return 0;
}

以上是关于两种排序方法的主要内容,如果未能解决你的问题,请参考以下文章

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

多线程 Thread 线程同步 synchronized

一个具有两种显示类型的片段[关闭]

替换的片段仍然可见

两种常用的C语言排序算法

ArryList 排序总结