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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python

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

Q&A

1回答

3169閲覧

バブルソートでカウントができない

退会済みユーザー

退会済みユーザー

総合スコア0

Python

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

0グッド

0クリップ

投稿2017/07/12 01:46

バブルソートでカウントができないです。
バブルソートを実装したいです。
num_arrayを何回入れ替えたら元の順序である[1,2,3,4,5]に戻るかをcountでカウントして出力させたいです。この場合だと、[5,4,3,2,1]→[1,4,3,2,5]→[1,2,3,4,5]で2回の2を出力させたいです。

# coding: utf-8 num_array = [5,4,3,2,1] count =0 change = True while change: change = False for i in range(len(num_array) - 1): if num_array[i] > num_array[i + 1]: num_array[i], num_array[i + 1] = num_array[i + 1], num_array[i] count +=1 change = True print(count)

とコードを書いて実行したらprint(count)と書いているのに何も出力されませんでした。
何が間違っているのでしょうか?
バブルソートは
http://qiita.com/sue_charo/items/30f5d817da4c948c3be6
のページを参考にしてコードを書きました。

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

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

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

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

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

guest

回答1

0

もうあきれてだれも回答しないのかなぁ…(^_^;)
2回じゃねーし…

Python

1# coding: utf-8 2num_array = [5,4,3,2,1] 3 4count = 0 5change = True 6 7def bubble_sort(arr,count): 8 change = True 9 10 while change: 11 change = False 12 for i in range(len(arr) - 1): 13 if arr[i] > arr[i + 1]: 14 arr[i], arr[i + 1] = arr[i + 1], arr[i] 15 change = True 16 count += 1 17 return arr,count 18 19num_array,count = bubble_sort(num_array,count) 20 21 22print(count) 23print(num_array)

出力
10
[1, 2, 3, 4, 5]

はじめてpythonのプログラム作成しました(・∀・)

投稿2017/07/12 02:35

jm1156

総合スコア866

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

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

退会済みユーザー

退会済みユーザー

2017/07/12 04:37

ありがとうございます。10回ではなく、2回が出力されるようにコードを組みたいです。 [5,4,3,2,1]→[1,4,3,2,5]→[1,2,3,4,5]で2回 だからです。 もしかして、このバブルソートではそれができないのでしょうか?
jm1156

2017/07/12 04:46

なんで2回なのでしょう?
退会済みユーザー

退会済みユーザー

2017/07/12 04:52

[5,4,3,2,1]→[1,4,3,2,5] で5と1を入れ替える [1,4,3,2,5]→[1,2,3,4,5] で2と4を入れ替え て2回だからです。 まず12345の番号の中から最小のもの(ここでは1)が元の位置に戻るように、1と1が本来あるべき場所(ここでは5)の数字を交換します。次に、1の次に小さい数(ここでは2)が元の位置に戻るように、2と2が本来あるべき場所(ここでは4)の数字を交換します。 ということで2回の交換で済む、ということです。
jm1156

2017/07/12 05:02

なんで5と1を入れ替えるのでしょう? (^_^;) 自分の書いたプログラムと「バブルソート」がなんなのか調べましたか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問