なぜ並べ替えが必要なのでしょうか?並べ替えとは、データ項目間の線形関係に基づいて、データを特定の順序 (通常は昇順または降順) に配置するプロセスを指します。
ソートアルゴリズム
バブルソート
アルゴリズム
ステップ 2: i = 0
ステップ 3: i
ステップ 4: j = 0
ステップ 5: j
ステップ 6: array[j] > array[j 1] の場合、ステップ 7 に進みます。それ以外の場合はステップ 8 に進みます
ステップ 7: array[j] と array[j 1]
を交換する
ステップ 8: j をインクリメントします。ステップ 5 に進む
ステップ 9: i をインクリメントします。ステップ 3 に進む
ステップ 10: 終了
def bubble_sort(arr): print("Array Before Sorting: ", end='') print(arr) for i in range(len(arr)): for j in range(len(arr)-i-1): if arr[j] > arr[j 1]: arr[j], arr[j 1] = arr[j 1], arr[j] print("Array After Sorting: ", end='') print(arr) # Main bubble_sort([7, 4, 1, 3, 4, 7, 87, 9, 6, 4, 2, 2, 3, 5, 6])時間計算量
平均的なケース: O(n^2)
最悪の場合: O(n^2)
アルゴリズム
ステップ 2 : i = 0
ステップ 3 : i
ステップ 4: 最小値 = i; j = i 1
ステップ 5 : j
ステップ 6 : array[minimum_value] > array[j] の場合、ステップ 7 に進みます。それ以外の場合はステップ 8 に進みます
ステップ 7 : minimum_value = j
ステップ 8: j をインクリメントします。ステップ 5 に進む
ステップ 9 : array[minimum_value] と array[i]
を交換する
ステップ 10: i をインクリメントします。ステップ 3 に進む
ステップ 11 : 終了
平均的なケース: O(n^2)
最悪の場合: O(n^2)
アルゴリズム
ステップ 2: i = 1
ステップ 3: i
ステップ 4: key = arr[i]
ステップ 5: j = i - 1
ステップ 6: j >= 0 かつ arr[j] > key の場合、ステップ 7 に進みます。それ以外の場合はステップ 10 に進みます
ステップ 7: arr[j 1] = arr[j]
ステップ 8: j を 1 だけデクリメントします
ステップ 9: ステップ 6 に進む
ステップ 10: arr[j 1] = key
ステップ11:iを1だけインクリメントする。ステップ 3 に進む
ステップ 12: 終了
def bubble_sort(arr): print("Array Before Sorting: ", end='') print(arr) for i in range(len(arr)): for j in range(len(arr)-i-1): if arr[j] > arr[j 1]: arr[j], arr[j 1] = arr[j 1], arr[j] print("Array After Sorting: ", end='') print(arr) # Main bubble_sort([7, 4, 1, 3, 4, 7, 87, 9, 6, 4, 2, 2, 3, 5, 6])時間計算量
平均的なケース: O(n^2)
最悪の場合: O(n^2)
アルゴリズム
マージソートアルゴリズム
ステップ 1: 開始
ステップ 2: length(array)
ステップ 3:mid_point = length(array) // 2
ステップ 4: left_half = array[:mid_point]
ステップ 5: right_half = array[mid_point:]
ステップ 6:sorted_left = merge_sort(left_half)
ステップ 7:sorted_right = merge_sort(right_half)
ステップ 8: マージを返す(sorted_left、sorted_right)
ステップ 9: 終了
マージ関数
ステップ 1: 開始
ステップ 2:sorted_merge = []
ステップ 3: l = 0、r = 0
ステップ 4: l
ステップ 5: left[l]
ステップ6: left[l]をsorted_mergeに追加します。 l を 1 ずつ増やす
ステップ 7: right[r] をsorted_mergeに追加します。 r を 1 増やす
ステップ 8: ステップ 4 に進む
ステップ 9: l
ステップ 10: left[l] をsorted_merge に追加します。 l を 1 ずつ増やす
ステップ 11: ステップ 9 に進む
ステップ 12: r
ステップ 13: right[r] をsorted_merge に追加します。 r を 1 増やす
ステップ 14: ステップ 12 に進む
ステップ 15:sorted_merge
を返す
ステップ 16: 終了
平均的なケース: O(n log n)
最悪の場合: O(n log n)
アルゴリズム
クイックソート
ステップ 1: 開始
ステップ 2: 低
ステップ 3: pivot_index = パーティション(arr, low, high)
ステップ 4: クイックソート(arr, low, pivot_index - 1)
ステップ 5: クイックソート(arr, pivot_index 1, high)
ステップ 6: 終了
パーティション関数
ステップ 1: 開始
ステップ 2: ピボット = arr[高]
ステップ 3: 左 = 低、右 = 高 - 1
ステップ 4: 左
ステップ 5: arr[left] > ピボットかつ arr[right] を交換します。
ステップ 6: arr[left] をインクリメントします
ステップ 7: arr[right] >= ピボットの場合、右をデクリメントします
ステップ 8: ステップ 4 に進む
ステップ 9: arr[left] と arr[high]
を交換します
ステップ 10: 左に戻る
ステップ 11: 終了
平均的なケース: O(n log n)
最悪の場合: O(n^2)
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3