[解決済み] Python 3: 挿入ソート比較カウンタ
2022-02-06 09:35:58
質問
挿入ソートプログラムに比較の合計カウンターを追加する必要があるのですが、なぜ比較の合計が0になるのかわかりません
比較の出力が0ではなく、15(私の特定の配列の場合)であるべきだということは分かっています。
これが今までの私のコードです。
def insertionSort(values):
k = 0
n = len(values) - 1
comparisons = 0
while k+1 <= n:
i = k
while values[i] > values[i+1]:
temp = values[i]
values[i] = values[i+1]
values[i+1] = temp
comparisons += 1 #I think this is wrong
k = k + 1
return comparisons, values
何が間違っているのでしょうか?
どのように解決するのですか?
あなたのコードをチェックしたところ、[7,5,4,6]をソートする目的が達成されていません。
以下はその修正版です。
def insertionSort_mod(values):
k = 0
n = len(values) - 1
comparisons = 0
while k+1 <= n:
i = k+1
curr_val = values[i]
comparisons += 1
while i>0 and values[i-1] > curr_val:
values[i] = values[i-1]
i=i-1
comparisons += 1
values[i] = curr_val
k = k + 1
return comparisons, values
print insertionSort_mod( [1, 2, 3, 55, 5, 6, 8, 7, 9, 111])
これを出力する。
(15, [1, 2, 3, 5, 6, 7, 8, 9, 55, 111])
k+1 は現在のインデックスなので、i は k+1 となり、前の値 i-1 と比較されるはずです。
関連
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ピロウズ画像色処理の具体的な活用方法
-
opencvとpillowを用いた顔認証システム(デモあり)
-
PythonはWordの読み書きの変更操作を実装している
-
Pythonによるjieba分割ライブラリ
-
Python百行で韓服サークルの画像クロールを実現する
-
[解決済み】ImportError: sklearn.cross_validation という名前のモジュールがない。
-
[解決済み】TypeErrorの修正方法。Unicodeオブジェクトは、ハッシュ化する前にエンコードする必要がある?
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】csv.Error:イテレータはバイトではなく文字列を返すべき
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない