記事ディレクトリ
時間と空間の複雑さの分析 – バブル ソート アルゴリズム
だいたい
バブルソートアルゴリズムとは?
バブルソーティングのアルゴリズムはnラウンドの大規模な交換を行うもので、各ラウンドは隣り合う2つの数字の大きさを比較して交換を行います。
[外部リンクの画像転送に失敗しました。ソース サイトにアンチリーチング メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-WFG1VuGd-1661504862731) (C:\Users\dongxu.kwb\Downloads\Unnamed file) (1)].png)
コード部分
/**
* @author `dongxu.kwb`
* @date `2022/8/26`
*/
public class PaoSort {
public static void main(String[] args) {
int[] arr = {79,3213,3,5,45,65};
paoSort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
public static void paoSort(int[] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length-1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
}
}
それの時間複雑度分析と空間複雑度分析
最初に時間の複雑さについて話しましょう。
時間の複雑さに影響を与えるのは、これらの 2 つのfor
ループです。
or (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length-1; j++) {
}
}
最初の for ループは時間を実行し、その内部にループをn
ネストするため、時間の計算量は O( n 2 n^{2}n-1
n(n-1)
n2 )
空間の複雑さについて話しましょう
スペースの複雑さ 作成された変数は、temp
スペースの複雑さが O(1) であるためです。