-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathradixSortWay2.cpp
95 lines (71 loc) · 1.33 KB
/
radixSortWay2.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include<iostream>
using namespace std;
#define size 10
class Queue{
private:
int q[10][size];
int front[10];
int rear[10];
int remove(int k){
int item;
item=q[k][front[k]];
if(front[k]==rear[k])
front[k]=rear[k]=-1;
else
front[k]= (front[k]+1);
return item;
}
public:
Queue(){
int i;
for(i=0;i<10;i++){
front[i]=rear[i]=-1;
}
}
void Enqueue(int item, int k){
if( front[k]==rear[k]+1 || front[k]==0 && rear[k]==99)
cout<<"Queue "<<k <<" is full";
else if(front[k]==-1){
front[k]=rear[k]=0;
}
else
rear[k]= (rear[k]+1) % 100;
q[k][rear[k]]=item;
}
int *Dequeue()
{
int *p=new int[size];
int k=0;
for(int i=0;i<10;i++){
while(front[i]!=-1){
p[k]=remove(i);
k++;
}
}
return p;
}
};
int main(){
Queue ob;
int *a= new int[size];
for(int i=0;i<size;i++){
cout<<"Enter element at "<<i<<" th index: "<<endl;
cin>>a[i];
}
int x=1;
int d=10;
for(int i=1;i<=3;i++){
for(int j=0;j<size;j++){
int digit= a[j]%d/x;
ob.Enqueue(a[j],digit);
}
a=ob.Dequeue();
x*=10;
d = d*10;
}
cout<<"sorted list"<<endl;
for(int i=0;i<size;i++){
cout<<a[i]<<" ";
}
cout<<endl;
}