並べ替えと検索
並べ替えアルゴリズム:データの文字列を特定の順序で並べ替えることができるアルゴリズム
1.ソートアルゴリズムの安定性
安定:安定ソートアルゴリズムは、同じキー値を持つレコードを相対的な順序で保持します。つまり、ソートアルゴリズムが安定している場合、同じキー値RとSを持つ2つのレコードがあり、RがSのSに表示される場合元のリストBefore、RはソートされたリストのSの前にもなります
(安定したアルゴリズムは、実際の状況のニーズに適している場合があります。並べ替え前の元のシーケンスの順序は、実際の問題に関連するいくつかのプロパティを示すいくつかの有用な情報を意味する場合があり、安定した並べ替えアルゴリズムはこれらの情報とプロパティを維持します)
適応性:ソート操作は、異なる長さのシーケンスを処理するために使用できます。複雑さの説明では、この問題を考慮に入れています。ただし、同じ長さのソートされたシーケンスであっても、状況は大きく異なります。たとえば、ソートされたシーケンスが非常に異なります。並べ替えられた形式に近いか、元々並べ替えられたシーケンスでした。これらの場合、シーケンスアルゴリズムが作業をより速く完了することができるかどうか、並べ替えアルゴリズムの適応性はこの問題を考慮します。ソートアルゴリズムが順序付けられたシーケンスに近い場合に高速に動作する場合、それは適応性があると言われます、実際にはソートに近いシーケンスを処理する必要があることが多いため、適応アルゴリズムにも実用的な価値があります。
2.ソートアルゴリズムの分類
さまざまなソートアルゴリズムのアイデアと実践の類似点と相違点を理解するために、人々はしばしば古典的なソートアルゴリズムをいくつかのカテゴリ、一般的なカテゴリに分類します。
- 挿入ソート
- ソートを選択
- 交換ソート
- 割り当て順序
- マージソート
- 外部ソーティング
3.バブルソート
def bubble_sort(alist):
n = len(alist)
count = 0
for j in range(n - 1):
for i in range(0, n - 1 - j):
if alist[i] > alist[i + 1]:
alist[i], alist[i + 1] = alist[i + 1], alist[i]
count += 1
if count == 0:
print(alist)
return
print(alist)
if __name__ == "__main__":
bubble_sort([6, 5, 4, 3, 2, 1])
时间复杂度
* 最优时间复杂度:O(n) 表示遍历一次没有发现任何可以交换的元素,排序结束
* 最坏时间复杂度: O(n²)
* 稳定性: 稳定
暗号: 一个班长 比较两个 找到最大的放最后