質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

1654閲覧

バケットソートをつかったアルゴリズム。python

A_.

総合スコア5

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/07/21 10:33

不規則に並べた数字をバケットソートを使って昇順に並べ替えたいです。
その際、下の写真のように書きたいです。
ぜひ教えてください。
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2021/07/21 11:04

なにを教えるんでしょうか
A_.

2021/07/21 11:14

whileの部分を教えてもらいたいです
A_.

2021/07/21 12:31

①変数 a に,並べ替えたい数字の列を入れます.  まあ,ここは,あまり考えてもしかたないので,これまでと同様に    a = [3,2,5,5,1,2,1] の様に入れてやればいいです. ②次に,変数 a に何個の数字が入っているのかを調べて,変数 kosu に入れましょう.  これは既知のことですね. ③ここで,バケツを用意します.  バケツの中の紙には変数 a に出てくる数字の個数をカウントしていきたいので,変数の名前を b としましょう.  何となく,「バケツ1」は b[1] とすれば良さそうな気がしますが,ここで b[1]=b[1]+1 とかするとエラーが出ます.  そこで,準備として,リスト(「配列」ともいう)を使って,自由に計算できるようにするために,次のオマジナイを書いておきます.  変数 b を自由に計算できるリストの変数にしたいとき:    b = list(range(変数の数))  ここで「変数の数」は,バケツが何個あるかです.  ただし,これまでと同様にリストは「0番から数える」ので,もし「バケツ1」から「バケツ5」までの入れ物が欲しいのなら,使わない「バケツ0も含めて,6個のバケツが必要」ということになります.  だから,    b=list(range(6))  ということにしてやれば,「バケツ0」から「バケツ5」の6個のバケツを作ることができます.  この問題では,数字の範囲を input() で読み込むようにしましょう.  問題を簡単にするために,バケツは使っても使わなくても「バケツ0」から作ることにして,対象の数字の範囲の最大値だけを読み込むようにします.  例えば,「0から9まで」のランダムに並んだ数字を並べ替えるのであれば「9」を,「0から100まで」であれば「100」を読み込むようにします.  最大の数は変数 saidai に入れることにしましょう. これで準備は終わりです. 例えば,変数 a には, [3,2,5,5,1,2,1]が入っているとすると kosu は 7,数字の範囲は5より大きければ何でもいいので,saidai は 5 にしておきましょう. ④a[0]から順番に,その数字が差し示すバケツの数字を +1 します.  この例であれば,最初の変数 a[0] には 3 がは入っているので,「バケツ3」の値を1増やします.  具体的には,バケツを表す変数 b を使って, b[3] = b[3] + 1 のようにしてやれば良いですね.   ※ここで,+= とか,この授業で導入していない書き方をすると0点なので注意しましょう. ⑤これを while を使って kosu 回繰り返してやれば,バケツに入れる作業は終わりです. ⑥最後に,やはり while を二重に使って,0は表示せず,1は2回表示,2も2回,3は1回,4は表示せず,5は2回表示してやれば,並べ替えた(ソートされた)結果が表示されます.
udon-ken

2021/07/21 14:06

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14246412504 これの事ですか?? マルチポストは当然マナーや態度としてよくないですが、回答が付いていないならまだしも、回答をもらっている(少なからず解決の方向に進んでいる)のになぜそこで得た知識を織り込んで再質問しないのでしょうか?
guest

回答1

0

Python

1a = [5, 3, 4, 8, 5, 10] 2print("before: ", a) 3 4# b: a内の最大値+1 個の0を並べた度数表 5b = [0] 6b *= max(a)+1 7 8# 度数表の更新 9for val in a: 10 b[val] += 1 11 12# 度数表を基にソート 13a = [] 14for val in range(len(b)): 15 a += [val] * b[val] 16 17print("after : ", a)

投稿2021/07/22 01:50

編集2021/07/23 01:31
episteme

総合スコア16612

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問