/ /このバブルの並べ替えや挿入の並べ替えはCですか? - c

このバブルの並べ替えや挿入の並べ替えはCですか? - c

私は挿入のアルゴリズムを理解することによってこのコードを書いています。私の先生は、バブルの種類を言うが、私の友人はそれが挿入だと言っている。誰かがこれをチェックして私にブリーフィングしてもらえますか?

#include <stdio.h>
void sort(int n) {
int i, j;
float arr[n], k;
for (i = 0; i <= n - 1; i++) {
printf("Enter the number");
scanf("%f", &arr[i]);
}

for (i = 1; i <= n - 1; i++) {
j=i
while (arr[j] < arr[j - 1] && j > 0) {
k = arr[j - 1];
arr[j - 1] = arr[j];
arr[j] = k;
/*printf("nt%f",arr[j]);*/
j--;
/*printf("n%d",j);*/
}
/*printf("n%d",x[i]);*/
}
for (i = 0; i < n; i++) {
printf("n%f", arr[i]);
}
}

int main() {
int t;
printf("Enter the number of values to be sorted");
scanf("%d", &t);
sort(t);
}

回答:

回答№1は4

両方の/私のためのどちらかのように見えます。 配列のソートされていない部分の最初の要素を常に取り、それを配列のソートされた部分の正しい場所に配置するため、ソートの並べ替えが可能です。しかし、挿入は、必要な要素をすべて1つ右に移動し、選択した要素を正しい場所に挿入することによって行われませんが、選択された要素は、選択された要素まで1要素左にスワップされます正しい場所にあります。

配列の "ソート"と "ソートされていない"部分のために、私は挿入ソートと言うでしょう。

隣の要素を交換するので、私はバブルソートと言うでしょう。

しかし、それは私にインサートの並べ替えのように思える。 (非効率的な)スワッピングの代わりに、左の要素を右に移動し、最後に選択した要素を最後に書き込むだけです(選択された要素の最終的な正しい位置)。


回答№2については2

私はあなたが最初のミスフィットを見つけることによってソートされたチャンクを作成するように、挿入ソートに近いと言います。配列全体を反復し、最後に最大の要素をプッシュする(バブルソートのように)

それは挿入の標準バージョンに近いあなたがソートされたチャンク内の適切な場所を見つけるまで、要素を入れ替えます。ただし、要素を挿入した後は、ソートされたサブ配列が作成されたため、間違ったインデックスからインデックスを開始します。

これは2つのソートアルゴリズムを視覚化するのに役立ちます: https://visualgo.net/bn/sorting


回答№3の場合は0

これは Bubble Sortアルゴリズム。唯一の違い Bubble Sort あなたのアルゴリズムはそれです Bubble Sort アルゴリズムは最初に一番右の要素をソートし、次にアルゴリズムは左端の要素を最初にソートします。

分析:

あなたのAlgo:

<---------
<--------
<-------
<------
<-----
<----
<---
<--
<-
<

バブルソートアルゴ:

------>
----->
---->
--->
-->
->
>