見出し画像

Bing にプログラムのアルゴリズムについて聞いてみた・・・けど間違っていた件


先日、ソートアルゴリズムのことを記事にしました。

バブルソートと選択ソートを話題にしたのですが、「選択ソート」の名前がわからなかったんですね。
なので、AI に聞いてみました。

私の質問

void sort(int *array, unsigned int size) {
    for (int i = 0; i < size - 1; i++) {
        for (int j = i+1; j < size; j++) {
            if (array[i] > array[j]) {
                int temp = array[j];
                array[j] = array[i];
                array[i] = temp;
            }
        }
    }
}

このプログラムは、何と言うアルゴリズムですか?

bingの答え

このプログラムは、選択ソートアルゴリズムです。選択ソートアルゴリズムは、配列の中から最小値を探し、それを配列の先頭と交換することを繰り返すことで、配列を昇順に並べ替えます。このアルゴリズムは、最悪の場合でもO(n^2)の時間がかかるため、大量のデータを扱う場合には適していません。

そうか。
君はプログラムを解析し、そして何をしているのかを把握したのか・・・。

【2023/6/6 追記】
だが違う、違うぞ。

これは選択ソートではない。

選択ソートはこんな頻度で置き換えはしない。
選択ソートについてはこちら→

遊月さん、コメントありがとう!
助かりました。


一応、これも聞いておきましょう。

私の質問

void sort(int *array, unsigned int size) {
    for (int i = 0; i < size - 1; i++) {
        for (int j = 0; j < size - i - 1; j++) {
            if (array[j] > array[j+1]) {
                int temp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = temp;
            }
        }
    }
}

このプログラムは何と言うアルゴリズムですか?

Bing の答え

このプログラムはバブルソートと呼ばれるアルゴリズムです。バブルソートは、リストにおいて隣り合うふたつの要素の値を比較して条件に応じた交換を行う整列アルゴリズムで、値の大きい順(降順)か値の小さい順(昇順)にリストを並び替えます。

うーむ。
大変、よくできました。

アルゴリズムを聞いてプログラムを書いてもらうよりも、プログラムからアルゴリズムの名前を知る方が少し 難しい気がするんですが、それもできてしまうのですね。

ちょっとした驚きでした。


いいなと思ったら応援しよう!