字符串大小比较(排序)
比较时,从字符串最左边的一个字符开始,两个字符串之间一个字符一个字符的比较,直接出现差异、或者其中一个串结束为止;
-
比如ABC与ACDE比较,第一个字符"A"相同,继续比较第二个字符,由于第二个字符是"C">"B",所以不再继续比较,结果就是"ACDE"大于"ABC";
-
再如ABC与ABC123比较,比较三个字符后,"ABC"字符串长度小于"ABC123",结果就是"ABC123"大于"ABC";
-
再如C与ABC123比较,由于"C"第一个字符大于"A",所以结果就是"C"大于"ABC123"。
-
从第一个字符相比,大者为大,小者为小,若相等,则继续比较后面的字符;
所以,长度不能直接决定大小,字符串的大小是由左边开始最前面的字符决定的。
//传入两个参数,一个字符串地址,一个字符串长度
void mysort(string s[],int len)
{
//使用冒泡排序
for(int i=0;i<len;i++)
{
for(int j=0;j<i;j++)
{
if(s[i] < s[j])
{
string temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
}
}
//打印排序后的字符串
void printArray(string s[],int len)
{
for(int i=0;i<len;i++)
{
cout << s[i] << " ";
}
cout << endl;
}
int main()
{
//定义一个字符串数组,存放5个字符串
string s[5] = {"object-c","c++","java","py","basic"};
mysort(s,5);
printArray(s,5);
}
输出结果:
basic c++ java object-c py
特别注意:
如果遇到大小写、字母和数字等进行比较时,则按照各自字符的ASCII码值来进行比较;
如A与a比较,A的ASCII码值是65,a的ASCII码值是97,则a>A