Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python】バブルソートでリスト内の2番目に大きい数値を見つける方法

バブルソートを使ってリスト内の2番目に大きい数値を求める場合、まずリストの要素を並べ替えるためのメソッド(ここでは「bubble_sort」)を定義します。並べ替えが完了したら、末尾から2番目の要素を返す「get_second_largest」などのメソッドを定義し、結果を取得します。

以下に具体的な実装例を示します。

サンプルコード

my_list = []
my_input = int(input("Enter the number of elements..."))
for i in range(1,my_input+1):
    b=int(input("Enter the element..."))
    my_list.append(b)
for i in range(0,len(my_list)):
    for j in range(0,len(my_list)-i-1):
        if(my_list[j]>my_list[j+1]):
            temp=my_list[j]
            my_list[j]=my_list[j+1]
            my_list[j+1]=temp
print('The second largest element is:')
print(my_list[my_input-2])

実行結果

Enter the number of elements...5
Enter the element...1
Enter the element...4
Enter the element...9
Enter the element...11
Enter the element...0
The second largest element is:
9

コードの解説

  • まず、要素を格納するための空のリストを定義します。

  • ユーザーからリストに登録する要素数を入力として受け取ります。

  • ユーザーが各要素の値を順番に入力します。

  • ループ処理によって、入力された値を1つずつリストに追加(append)していきます。

  • バブルソートのアルゴリズムを用いて、隣り合う要素同士を比較しながらリスト全体を昇順に並べ替えます。

  • 並べ替え後のリストの末尾から2番目の要素(= 2番目に大きい値)をコンソールに出力します。

補足:バブルソートについて

バブルソートは、隣接する2つの要素を比較して大小関係が逆であれば交換する操作を繰り返す、シンプルなソートアルゴリズムです。計算量はO(n²)となるため、大規模なデータには不向きですが、仕組みが理解しやすく学習用途に適しています。

なお、実務では sorted(my_list)[-2] のように組み込み関数を使えば、より簡潔に2番目に大きい値を取得できます。ただし、ソートアルゴリズムの動作を理解する練習としては、今回のようなバブルソートの自作実装が非常に有効です。

  1. Pythonでリスト内の最小値を見つける方法を解説

    この記事では、リストの中から最小の数値を見つける方法について、具体的なサンプルコードとともに詳しく解説します。問題の概要問題: 数値のリストが与えられたとき、その中に含まれる最も小さい数値を画面に表示すること。この問題を解くアプローチは主に2つあります。ひとつは sort() メソッドを使ってリストを昇順に並べ替え、先頭の要素(インデックス0)を取得する方法。もうひとつは、Pythonに標準で用意されている組み込み関数 min() を使う方法です。それぞれ順番に見ていきましょう。方法1:sort()メソッドで並べ替えて最小値を取得するまずはリストを昇順にソートし、先頭の要素を取り出す方法です。

  2. Pythonで配列内の最大の要素を見つける方法を解説

    この記事では、「配列の中から最大の要素を求める」という問題の解決方法について詳しく解説します。 問題の概要 問題文:与えられた配列に対して、その中で最も大きい要素を計算して求める必要があります。 ここではブルートフォース(総当たり)アプローチを使用します。これは、配列全体を先頭から順番に走査しながら各要素を比較し、その時点での最大値を更新していくというシンプルかつ確実な手法です。 実装例 以下に具体的なコードを示します。 # 最大値を求める関数 def largest(arr, n): # 最大要素の初期値として最初の要素を設定 max = arr[0] # 配列全体を