Help us understand the problem. What is going on with this article?

pythonでバブルソートを実装してみた

pythonとアルゴリズムの勉強かねがね、バブルソートを実装してみました。

1.ランダムなリストを作成する
例:
[1,3,0,4,2]

2.操作対象リストの右端の値と隣の値を比較して、右側が小さければ値を入れ替え
 左端に到達するまで比較を繰り返す
例:
[1,3,0,4,2]→(4と2を比較して2が小さいので入れ替えする)→[1,3,0,2,4]
[1,3,0,2,4]→(0と2を比較して0が小さいので入れ替えなし)→[1,3,0,2,4]
[1,3,0,2,4]→(3と0を比較して0が小さいので入れ替えする)→[1,0,3,2,4]
[1,0,3,2,4]→(1と0を比較して0が小さいので入れ替えする)→[0,1,3,2,4]

3.左端まで比較が終わると、左端の値がリスト内で一番小さい値になるので
 左端の値を操作済みリストに移行して、操作対象のリストから除外する

-操作済リストの中身がラスト1個になるまで2.と3.を繰り返す-

…という処理をバブルソートと呼ぶらしいです。

(4.ラスト1個は比較せず操作済リストに移行する)

bubble_sort.py
import random

# 準備する値の数を入力
numbers = 10

# チェック済の値を格納するリストの作成
pop_list = []

# 乱数の作成
num_list = list(range(numbers))
random.shuffle(num_list)

def _num_checker(num_list, pop_list):
    # 一番右の値を取り出し(_a)、隣の値(_b)と比較する
    # 左端まで大小比較を行う
    for i in range(-1,len(num_list)*-1, -1):
        _a = num_list[i]
        _b = num_list[i-1]

        # 右の値が左の値より小さかったら値を入れ替える
        if _a < _b:
            num_list[i] = _b
            num_list[i-1] = _a

    # 一番左の値を移動済リストに送る
    pop_list.append(num_list[0])
    num_list.remove(num_list[0])

    return num_list, pop_list

# メイン処理
print("START : ",num_list)
for i in range(len(num_list)):
    num_list, pop_list = _num_checker(num_list, pop_list)
print("GOAL  : ",pop_list)

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした