两种排序方法
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 插入排序还是归并排序?(两种解法)