两种排序方法

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;

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

数据结构PTA7.1.2 插入排序还是归并排序?(两种解法)

统计逆序对的两种解法

好!recover-binary-search-tree(难)& 两种好的空间O(n)解法 & 空间O解法

最多7次比较解决5个数的排序问题的解法

topK的3种解法

对大数据量进行排序--位图法