iT邦幫忙

1

佇列問題

  • 分享至 

  • xImage

我有問題,想請教一下
如何利用佇列的功能,重新排列資料但不破壞其基本順序 用以下數字列表來看:
3 22 12 6 10 34 65 29 9 30 81 4 5 19 20 57 44 99
將它們分為四個不同的組別:
Group 1: less than 10
Group 2: between 10 and 19
Group 3: between 20 and 29
Group 4: 30 and greater
重新排列後的數字列表如下:
| 3 6 9 4 5 | 12 10 19 | 22 29 20| 34 65 30 81 57 44 99 |

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

7
海綿寶寶
iT邦大神 1 級 ‧ 2020-05-12 16:00:07

這題不用高手,我就會了

最簡單的做法就是弄 4 個佇列
Group 1 一個
Group 2 一個
Group 3 一個
Group 4 一個
然後從頭讀到尾並分別放進 4 個佇列中
整個讀完了之後
再把 4 個佇列「串接」起來
|Group 1|Group 2|Group 3|Group 4|

收工放飯
/images/emoticon/emoticon71.gif

如果不想用到 4 個佇列
那麼就「用 1 個佇列,原始資料讀 4 次」
第一次從頭讀到尾,只把 GROUP 1 的數字填進佇列
第二次從頭讀到尾,只把 GROUP 2 的數字填進佇列
第三次從頭讀到尾,只把 GROUP 3 的數字填進佇列
第四次從頭讀到尾,只把 GROUP 4 的數字填進佇列

這樣也可以

看更多先前的回應...收起先前的回應...

一.一... 大大不只是高手 而是大神啊 (跪

wen1112 iT邦新手 5 級 ‧ 2020-05-13 18:19:47 檢舉

我是這樣想,但又覺得怪
int main( )
{
int choice, j=0, count=0, flag=0;
do
{
Scanf(“%d” , &arr in[j]);
If (arr in[j]==0)
{
break ;
}
} while (1);

wen1112 iT邦新手 5 級 ‧ 2020-05-13 18:22:25 檢舉

那如果不用程式,以演算法寫,要怎麼開頭呢?

wen1112 iT邦新手 5 級 ‧ 2020-05-13 18:23:18 檢舉

/images/emoticon/emoticon56.gif

你上面寫的程式
和你問的問題
有點差距...

我要發表回答

立即登入回答