美文网首页
程序排序小记

程序排序小记

作者: JocobZling | 来源:发表于2019-02-24 10:59 被阅读0次

写在前面:很久没写过c/c++了,准备机试,练习ing

遇到的问题

  • 怎么循环接收数据?
    while(cin>>num>>way)
  • 怎么处理数据?
        int score[num];
        string name[num];

        for(int i=0;i<num;i++){
            cin>>name[i];
            cin>>score[i]; 
        }
        //降序冒泡 
        if(way==0){
            jiangXv(score,name,num);
        }
        //升序 
        if(way==1){
            shengXv(score,name,num);
        }
  • 怎么优化?
    看答案的大家很多用了vectors跑得,我试了一下在本地跑不太过,这些的使用都不太了解,之后看明白再继续补充吧~
  • 完整代码
#include<iostream>
using namespace std;
void display(int score[],string name[],int num){
    for(int i=0;i<num;i++){
        cout<<name[i]<<" "<<score[i]<<endl;
    }
}
void jiangXv(int score[],string name[],int num){
        int m;
        string n;
        bool change;
        for(int i=num-1,change=true;i>=0&&change;i--){
            change=false;
            for(int j=0;j<i;j++){
                if(score[j]<score[j+1]){
                    m=score[j];
                    n=name[j];
                    score[j]=score[j+1];
                    score[j+1]=m;
                    name[j]=name[j+1];
                    name[j+1]=n;
                    change=true;        
                }
            }
        }
        display(score,name,num);
}
void shengXv(int score[],string name[],int num){
        int m;
        string n;
        bool change;
        for(int i=num-1,change=true;i>=0&&change;i--){
            change=false;
            for(int j=0;j<i;j++){
                if(score[j]>score[j+1]){
                    m=score[j];
                    n=name[j];
                    score[j]=score[j+1];
                    score[j+1]=m;
                    name[j]=name[j+1];
                    name[j+1]=n;
                    change=true;        
                }
            }
        }
        display(score,name,num);
}

int main()
{
    int num;
    int way;
    //熟悉c++怎么接收多组数据 
    while(cin>>num>>way){
        int score[num];
        string name[num];

        for(int i=0;i<num;i++){
            cin>>name[i];
            cin>>score[i]; 
        }
        //降序冒泡 
        if(way==0){
            jiangXv(score,name,num);
        }
        //升序 
        if(way==1){
            shengXv(score,name,num);
        }
    }

    return 0;
} 

两个冒泡排序真的好蠢噢。。

相关文章

  • 程序排序小记

    写在前面:很久没写过c/c++了,准备机试,练习ing 遇到的问题 怎么循环接收数据?while(cin>>num...

  • 简单的数组排序 小记

    简单的数组排序 小记 var arr=['float', 'zindex', 'xy', 'absolute', ...

  • 排序与查找

    参考:程序员必知8大排序3大查找(一)程序员必知8大排序3大查找(二)程序员必知8大排序3大查找(三)图解排序算法...

  • 品一品编程 --- 5

    问题描述: 实现基于数组的 sort 排序函数 程序如下: //冒泡排序 O(n^2) //快速排序---优势:...

  • 11.5 字符串:选择排序

    选择排序【伪代码】: 程序示例

  • Java常用排序算法/程序员必须掌握的8大排序算法

    Java常用排序算法/程序员必须掌握的8大排序算法

  • 【习题40】

    【程序40】题目:字符串排序。

  • [数据结构]堆排序 解题报告

    Problem Description 实验要求:用堆排序算法按关键字递减的顺序排序。程序输入:待排序记录数(整数...

  • 第2天

    题目:对10个数进行排序 分析:可以采用冒泡排序法,也可以使用选择排序法 程序1:冒泡排序法 #include i...

  • 程序员应该掌握哪些算法

    程序员必须掌握的常用算法,主要包括以下内容: 算法: 1、排序算法:快速排序、归并排序、计数排序 2、搜索算法:回...

网友评论

      本文标题:程序排序小记

      本文链接:https://www.haomeiwen.com/subject/tjepyqtx.html