注册 登录
编程论坛 C++教室

两种方式选择排序,see see~~~

lianjiecuowu 发布于 2011-06-18 16:52, 455 次点击
#include<iostream>
#include <string>
using namespace std;
int shuz(int a[],int length);
int main()
{
    bool quit=false;
    int i;
    while(true)
    {
        int choice;
        cout<<"请输入您的选择 :"<<endl;
        cout<<"1.按数值大小进行排序"<<'\t'<<"2.按字符串大小进行排序"<<'\t'<<"3.quit"<<endl;
        cin>>choice;
        switch(choice)
        {
           case 1:
               {
                cout<<"您选择了按数值大小进行排序的选项"<<endl<<"请输入要排序6个数字:"<<endl;
                const int N=6;
                int data[N];
                for(i=0;i<N;i++)
                cin>>data[i];
                cout<<endl<<endl;
                shuz(data,N);
                break;
               }
           case 2:
               {
                  cout<<"您选择了按字符串大小进行排序的选项"<<endl<<"请输入要排序6个数字:"<<endl;
                  string s1,s2,s3,s4,s5,s6;
                  cin>>s1>>s2>>s3>>s4>>s5>>s6;
                  string a[6]={s1,s2,s3,s4,s5,s6};
                  for(i=0;i<5;i++)
                  for(int j=0;j<5-i;j++)
                  {
                    if(a[j]>a[j+1])
                    {
                       string temp;  
                       temp=a[j+1];
                       a[j+1]=a[j];
                       a[j]=temp;
                    }
                  }
                 for(i=0;i<6;i++)
                 cout<<a[i]<<'\t';
                 cout<<endl;
                 break;
               }
           case 3:
               {
                   quit=true;
                   break;
               }
           default:
               {
                   cout<<"输入有误"<<endl;
                   break;
               }
        }
        if(quit==true)
        break;
    }
    system("pause");
    return 0;
}
int shuz(int a[],int length)
{
    int i,j,temp;
    for(i=0;i<length;i++)
    cout<<a[i]<<'\t';
    cout<<endl<<endl;
    for(i=0;i<length-1;i++)
    for(j=0;j<length-i-1;j++)
    {
        if(a[j]>a[j+1])
        {
             temp=a[j];
             a[j]=a[j+1];
             a[j+1]=temp;
        }
      
    }
    cout<<"进行排序后:"<<endl;
    for(i=0;i<length;i++)
    cout<<a[i]<<'\t';
    return 0;
}
9 回复
#2
爱德华2011-06-18 17:30
你说的字符串大的大小排序是指的输入的数字还是里面的字符长度,如果是长度的话可以这样直接比较吗?
#3
lianjiecuowu2011-06-18 17:34
回复 2楼 爱德华
你可以自己试试啊都,嘿嘿
#4
linw12252011-06-18 18:36
可以考虑下含有空格的字符串排序,比如:New York
#5
ToBeStronger2011-06-18 19:30
楼主写一个重载<操作符,然后用set存储string的程序吧
#6
lianjiecuowu2011-06-18 19:51
回复 4楼 linw1225
你的关于 空格的问题,原先有人说过,会程序崩溃,其实你输入的是两个字符串,new是一个,york是一个,不信你试试。本意你是输入了6个,其实无意中输入了 多余6个,这算是程序的一个大bug吧。会尝试改进的,嘿嘿
#7
lianjiecuowu2011-06-18 19:52
回复 5楼 ToBeStronger
好,我试试。嘿嘿
#8
爱德华2011-06-19 13:59
写的不错啊!楼主肯定下了苦功夫的啊,
#9
爱德华2011-06-19 13:59
写的不错啊!楼主肯定下了苦功夫的啊,
#10
lianjiecuowu2011-06-19 15:56
回复 9楼 爱德华
谢谢,嘿嘿
1