0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonでわかる ~バブルソート~

Last updated at Posted at 2024-09-17

はじめに

最近データ構造とアルゴリズムの学習を始めたのでアウトプットも兼ねて、誰かの役に立てればと思い、この記事を投稿するに至りました。ちなみに、言語はPythonを使います。ロジックのみに触れるため計算量には触れません。

今回はバブルソートについて紹介したいと思います。

バブルソート(bubble sort)とは

バブルソートとは端的に言えば、配列の先頭から順に、隣り合う二つの要素の比較をする並べ替えの手法です。

コードで見る

bubble_sort
def bubble_sort(numbers: list[int]) -> list[int]:

    # 入力されたリストの長さを取得
    len_numbers = len(numbers)

    # 1. 比較を始めるインデックスを定めるループ
    for i in range(len_numbers)

    # 2. 具体的に比較をするインデックスを定めるループ*
     for j in range(len_numbers - 1 - i):

         # 3-1. 左側の要素が右側の要素よりも大きい場合
         if numbers[j] > numbers[j+1]:

             # 3-2. 値を入れ替える
             numbers[j], numbers[j+1] = numbers[j+1], numbers[j]
             
    return numbers

それでは、具体例を見ていきましょう。

具体例

これは何の変哲もない長さが3のリストです。この要素が1, 2, 3と左から右へと昇順になっているように変更します。

bubble_sort
nums = [3, 2, 1]

32を比較します。

bubble_sort
# i = 0
# j = 0
nums = [3, 2, 1]
#       ↑  ↑
#       j  j+1

3 > 2 であるため、ifの条件より nums[0] , nums[1] の値を交換します。

bubble_sort
# i = 0
# j = 0
nums = [2, 3, 1]

次に3を比較します。

bubble_sort
# i = 0
# j = 1
nums = [2, 3, 1]
#          ↑ ↑
#          j  j+1

2 > 1 であるため、ifの条件より nums[1] , nums[2] の値を交換します。

bubble_sort
# i = 0
# j = 1
nums = [2, 1, 3]

最初の要素の比較がすべて終わりました。ここで、 nums[-1] が一番大きな値である3になっていることがわかります。

バブルソートは1.(コードを参照)の処理が一回終わると、比較した中で一番大きな値が端に移動するようになります。

このことから、比較する必要がないため、2.のrange内がlen_numbers -1 - i となるのです。

続きを見ていきましょう。

21を比較します。

bubble_sort
# i = 1
# j = 0
nums = [2, 1, 3]
#       ↑  ↑
#       j  j+1

2 > 1であるため、ifの条件より nums[0] , nums[1] の値を交換します

bubble_sort
# i = 1
# j = 0
nums = [1, 2, 3]

これでソートが完了します。

参考

現役シリコンバレーエンジニアが教えるアルゴリズム・データ構造・コーディングテスト入門
動画を用いた視覚的な説明をしているため、とてもわかりやすいです。アルゴリズムを体系的に詳しく理解したい方はご購入をおすすめします。セール時だと、元の値段よりかなり安く購入できます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?