ホームページ  >  記事  >  バックエンド開発  >  選択ソートとバブルソートの使い方を 3 分で学びましょう

選択ソートとバブルソートの使い方を 3 分で学びましょう

烟雨青岚
烟雨青岚転載
2020-07-03 11:29:422977ブラウズ

選択ソートとバブルソートの使い方を 3 分で学びましょう

今日は、C 言語、選択ソート、バブル ソートに関するアルゴリズムをいくつか紹介します。

選択の並べ替えについては、まず並べ替えの概念を理解します。この考え方では、配列が与えられた場合、まず配列の最初の要素が最大または最小であると仮定します。このとき、要素の添え字を表すために 3 つの変数が使用されます。

1 つは現在の添字を表し、1 つは見つかった最大または最小の添字を表し、もう 1 つは各サイクルの最大値の添字を格納するために使用されます。プログラムの基本的な考え方をマスターしたら、シーケンスを進めます。最大の添字を見つけたら、毎回を除き、それを最大の添字に割り当てます。

見つけたら、仮定した現在値が今回のサイクルの最大値かどうかを判断し、そうでない場合は最大値と現在値を入れ替えて配列を一定の順序に並べ、最後にループを書いて出力します。結果。 。

コードは難しくないので、順を追って説明します。コードを添付するだけです。理解できない場合はメッセージを残していただければ、説明させていただきます。または、何か間違っているところがあれば修正できます。

#include<stdio.h>
void main()//主函数
{
   int a[10];
   int i,j,w;
   printf("请输入10个数字: \n");
    for(i=0;i<10;i++)
   scanf("%d",&a[i]);
    for(i=0;i<10;i++)
{
     for(j=0;j<10;j++)
     if(a[i]<a[j])//进行比较
//比较后进行交换
{
  w=a[i];
         a[i]=a[j];
           a[j]=w;
}
  }
printf("排序后:\n");
        for(i=0;i<10;i++)
            printf("%4d",a[i]);
              printf("\n");
}

結果表示:

選択ソートとバブルソートの使い方を 3 分で学びましょう

次は バブルソートです。これは C 言語で最も一般的です。最も一般的に使用されるアルゴリズムの 1 つであり、理解しやすいため、ほとんどの人が並べ替えを行うときに最初に使用します。このアルゴリズムは比較的理解しやすいです。

バブルソートの主な考え方は、隣接する数値をペアで比較することです。後者の値が前の値より大きいか小さい場合は、すべての数値が比較されるまで位置を交換します。

サイズ n の配列が指定された場合、n-1 回の比較が必要であり、各比較は n-1-i 回行われます。i は、最後のループで比較された添字を表します。ループ判定を 2 つ書き、交換が必要な場合は交換し、交換の必要がない場合は、すべての数値が比較されるまで次の 2 つの数値を比較します。

最後に、ループを使用して、並べ替えられたすべての数値を出力します。コードは次のとおりです。

#include<stdio.h>
#define N 10
void main()
{
   int a[10];
   int i,j,t;
   printf("请输入10个数字: \n");
    for(i=0;i<10;i++)
   scanf("%d",&a[i]);
//使用两层循环
    for(i=0;i<N-1;i++)
{
     for(j=i+1;j<N-(i+1);j++)
     if(a[j]<a[j+1])//比较大小
{
  t=a[j];
         a[j]=a[j+1];
           a[j+1]=t;
}
}
printf("排序后:\n");
        for(i=0;i<10;i++)
            printf("%4d",a[i]);
              printf("\n");
}

結果:

選択ソートとバブルソートの使い方を 3 分で学びましょう

##結論:

For選択 ソートの分析は非常に単純です. 入力のサイズは配列要素によって決定されます. 基本的な操作はキー値の比較 A[j] したがって、どの入力に対しても、選択ソートは O(n^2) アルゴリズムになります。したがって、この実験の時間計算量は O(100)、空間計算量は O(10) です。ただし、鍵が交換される回数は O(n) 回、より正確には n-1 回です (i ループの反復ごとに 1 回の交換が実行されます)。

この機能により、選択ソートが他の多くのソート アルゴリズムよりも優れたものになります。

バブルソートとは、隣接する2つの数値を比較し、大きいほうの数値を下に沈め(または小さい数値を浮き上がらせ)、合計n-1回の比較と交換を行う処理です。

上記のバブル アルゴリズムの実装を容易にするために、10 個の整数データを格納するために 1 次元配列のみを使用することを検討してください。並べ替えプロセス中、データは常にこの配列内にあります (適切な場所で操作され、追加のスペースを占有しません)。したがって、このアルゴリズムの時間計算量は O(n-1)、空間計算量は O(1) です。

読んでくれた皆さん、ありがとうございます。たくさんの利益が得られることを願っています。

この記事は、https://blog.csdn.net/zjy18886018024/article/details/80718713

から転載されたものです。推奨チュートリアル: 「

C 言語

以上が選択ソートとバブルソートの使い方を 3 分で学びましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。