Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語でのソート手法を説明する


問題

C言語のさまざまな並べ替え手法は何ですか?例を挙げて、1つの並べ替え手法を説明します。

解決策

C言語には、次の5つの並べ替え手法があります-

  • バブルソート(または)Exchangeソート。
  • 選択ソート。
  • 挿入ソート(または)線形ソート。
  • クイックソート(または)パーティション交換ソート。
  • マージソート(または)外部ソート。

バブルソート

これは、交換ソートとも呼ばれる最も単純なソート手法です。

手順

  • 最初の要素をリスト内の残りの要素と比較し、順序が正しくない場合は交換(交換)します。

  • すべての要素が並べ替えられるまで、リスト内の他の要素についても同じことを繰り返します。

30 50 40 10 20

以下に示す要素を検討してください-

C言語でのソート手法を説明する

ファーストパス

最初の要素を残りの要素と比較します。

a [0]> a [1] $ \ square $ $ \ square $ 30> 50(F)$ \ square $ $ \square$交換なし

a [0]> a [2] $ \ square $ $ \ square $ 30> 40(F)$ \ square $ $ \square$交換なし

a [0]> a [3] $ \ square $ $ \ square $ 30> 10(T)$ \ square $ $ \square$交換

a [0]> a [4] $ \ square $ $ \ square $ 10> 20(F)$ \ square $ $ \square$交換なし

10 50 40 30 20

セカンドパス

2番目の要素を残りの要素と比較します。

C言語でのソート手法を説明する

a [1]> a [2] $ \ square $ $ \ square $ 50> 40(T)$ \ square $ $ \square$交換

a [1]> a [3] $ \ square $ $ \ square $ 40> 30(T)$ \ square $ $ \square$交換

a [1]> a [4] $ \ square $ $ \ square $ 30> 20(T)$ \ square $ $ \square$交換

10 20 50 40 30

サードパス

3番目の要素を残りの要素と比較します。

C言語でのソート手法を説明する

a [2]> a [3] $ \ square $ $ \ square $ 50> 40(T)$ \ square $ $ \square$交換

a [2]> a [4] $ \ square $ $ \ square $ 40> 30(T)$ \ square $ $ \square$交換

10 20 30 50 40

フォースパス

4番目の要素を残りの要素と比較します。

C言語でのソート手法を説明する

a [3]> a [4] $ \ square $ $ \ square $ 50> 40(T)$ \ square $ $ \square$交換

10 20 30 40 50

手順

以下のバブルソートの手順を参照してください-

for (i=0; i<n-1; i++){
   for (j=i+1; j<n; j++){
      if (a[i] > a[j]){
         t=a[i];
         a[i] = a[j];
         a[j] = t;
      }
   }
}

以下は、バブルソート手法のCプログラムです-

#include<stdio.h>
int main(){
   int a[50], i,j,n,t;
   printf("enter the No: of elements in the list:\n");
   scanf("%d", &n);
   printf("enter the elements:\n");
   for(i=0; i<n; i++){
      scanf ("%d", &a[i]);
   }
   printf("Before bubble sorting the elements are:\n");
   for(i=0; i<n; i++)
      printf("%d \t\n", a[i]);
   for (i=0; i<n-1; i++){
      for (j=i+1; j<n; j++){
         if (a[i] > a[j]){
            t = a[i];
            a[i] = a[j];
            a[j] = t;
         }
      }
   }
   printf ("after bubble sorting the elements are:\n");
   for (i=0; i<n; i++)
      printf("%d\t", a[i]);
   return 0;
}

出力

上記のプログラムを実行すると、次の結果が得られます-

enter the No: of elements in the list:
5
enter the elements:
12 11 45 26 67
Before bubble sorting the elements are:
12
11
45
26
67
after bubble sorting the elements are:
11 12 26 45 67

  1. ユニオンにC言語でのポインタを説明する

    ユニオンはメモリロケーションと呼ばれ、さまざまなデータ型のいくつかの変数によって共有されます。 構文 構文は次のとおりです- union uniontag{    datatype member 1;    datatype member 2;    ----    ----    datatype member n; }; たとえば、 union sample{    int a;    float b;    char c; }

  2. C言語でのポインタアクセスの概念を説明する

    ポインタは、他の変数のアドレスを格納する変数です。 ポインタの宣言、初期化、アクセス 次のステートメントを検討してください- int qty = 179; ポインタの宣言 int *p; 「p」は、別の整数変数のアドレスを保持するポインタ変数です。 ポインタの初期化 アドレス演算子(&)は、ポインタ変数を初期化するために使用されます。 int qty = 175; int *p; p= &qty; 文字列の配列内の要素にアクセスする際にポインタがどのように役立つかの例を考えてみましょう。 このプログラムでは、特定の場所に存在する要素にアクセスしようとしています。操