字符串大小比较(排序)

比较时,从字符串最左边的一个字符开始,两个字符串之间一个字符一个字符的比较,直接出现差异、或者其中一个串结束为止;

  1. 比如ABC与ACDE比较,第一个字符"A"相同,继续比较第二个字符,由于第二个字符是"C">"B",所以不再继续比较,结果就是"ACDE"大于"ABC";

  2. 再如ABC与ABC123比较,比较三个字符后,"ABC"字符串长度小于"ABC123",结果就是"ABC123"大于"ABC";

  3. 再如C与ABC123比较,由于"C"第一个字符大于"A",所以结果就是"C"大于"ABC123"。

  4. 从第一个字符相比,大者为大,小者为小,若相等,则继续比较后面的字符;

所以,长度不能直接决定大小,字符串的大小是由左边开始最前面的字符决定的。

//传入两个参数,一个字符串地址,一个字符串长度
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

posted @ 2022-01-21 15:09  程序员没有头发  阅读(2124)  评论(0编辑  收藏  举报