美文网首页
[C++] 习题 2.14 用队列实现桶排序

[C++] 习题 2.14 用队列实现桶排序

作者: winng伍寅 | 来源:发表于2019-05-23 21:27 被阅读0次

    由用户输入n个10以内的数,每输入i(0≤i≤9),就把它插入第i号队列中,最后把10个队列中的非空队列,按队列号从小到大的顺序串成一条链,并输出该链的所有元素。

    前置技能

    • 队列(已在上篇提到栈的时候顺便提到了,不再赘述)
      但其实这用什么都一样,数组,二维数组,线性表,栈,队列……都一样的。

    • 桶排序
      桶排序,排序界的一朵奇葩。别人是兢兢业业地将一串数排好顺序,桶排序是输入的时候就让数字们各回各家,输出的时候再挨家挨户报数。这题想实现输入i并按顺序输出其实根本不用建10个队列,建一个长度为10的整数型数组就行/捂脸。
      (详见 https://blog.csdn.net/DeMonliuhui/article/details/76826070 博文)

      桶排序

    具体实现

    建一个队列数组,然后将输入的数字丢进对应的队列里,最后顺序输出。

    #include<iostream>
    #include<queue>
    
    using namespace std;
    
    int main(){
        char tmp;
        int ctoi;
        queue<int> q[10]; 
        cout<<"please input your numbers: ";
        while((tmp=getchar())!='\n'){
            if(tmp==' ') continue;
            else if(tmp<'0'||tmp>'9'){
                cout<<"error"<<endl;
                return 0; 
            }
            else{
                ctoi=tmp-'0';
                q[ctoi].push(ctoi);
            }
        }
        cout<<"the result is: ";
        for(int i=0;i<10;i++){
            while(!q[i].empty()){
                cout<<q[i].front()<<' ';
                q[i].pop();
            }
        }
        cout<<endl;
        return 0;
    } 
    

    相关文章

      网友评论

          本文标题:[C++] 习题 2.14 用队列实现桶排序

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