zoukankan      html  css  js  c++  java
  • [C++] 习题 2.14 用队列实现桶排序

    由用户输入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;
    } 
    
  • 相关阅读:
    开启MySQL远程访问权限 允许远程连接
    [SCOI2005]互不侵犯
    树的数据生成器
    博客园优化
    图的随机数据生成器
    CF 983B 序列函数
    [HNOI2010]弹飞绵羊
    luogu P3393 逃离僵尸岛
    LCT解读(1)
    [APIO2010]特别行动队
  • 原文地址:https://www.cnblogs.com/winng/p/algorithm_queue.html
Copyright © 2011-2022 走看看