C/C++NOIP之路

C++ 字符串数组排序 - 英文单词排序

2017-03-06  本文已影响860人  静_谷

如题:

2、对给定的10个国家名,国家名的长度定义在20个字符以内,按照字母的顺序从小到大输出。
如:
England
China
America
France
Japan
India
Brazil
Korea
Italy
Canada

就是排序啦,只是套了个string。这里用的是冒泡排序
代码如下:

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
    int n;
    cin>>n;
    string *str = new string[n];
    for(int i=0;i<n;i++)
    {
            cin>>str[i];           
     }
    
    for(int i=0;i<n;i++)
    {
            for(int j=1;j<n-i;j++)
            {
                    if(str[j]<str[j-1])
                    {
                                  string temp = str[j-1];
                                  str[j-1] = str[j];
                                  str[j] = temp;
                    }
            }
    }
    
    for(int i=0;i<n;i++)
    {
            cout<<str[i]<<endl;
     }
     
    delete str;
    cin.get();
    cin.get();
    return 0;
}

冒泡排序的基本框架:

for(int i = 0; i < n; i++) 
    { 
        for(int j = 1; j < n- i; j++) 
        { 
            if(array[j] < array[j - 1]) 
            { 
                 //在这里交换!
                type temp = array[j];
               array[j] = array[j - 1];
               array[j - 1] = temp;
            } 
        } 
    } 

有关内存操作(详见 C++ 使用指针动态创建数组):

string *str = new string[n];

这里开辟了一个长度为n的字符串数组

delete str;

记得删除内存!!!

上一篇下一篇

猜你喜欢

热点阅读