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

コムソート用のC++プログラム?


コムソートは、バブルソートやカクテルソートに似ています。コムソートは、隣接する要素を調べることから始めるのではなく、特定の数のインデックスを離して要素を調べることから始まります。これはギャップと呼ばれます。ギャップは[n/c]として定義されます。ここで、nは要素の数、cは収縮率です。各反復の後、この数値はcで除算され、最終的にアルゴリズムが隣接する要素を調べるまでフロアになります。

Input:53421
Output:12345

説明

コムソートは、[n / c]として定義されるギャップを持つ2つの要素を比較します。ここで、nは要素の数、cは収縮係数、つまり1.3です。各反復の後、この数値はcで除算され、最終的にアルゴリズムが隣接する要素を調べるまでフロアになります。

#include <iostream>
using namespace std;
void combsort(int a[], int n) {
   int i, j, gap, swapped = 1;
   double temp;
   gap = n;
   while (gap > 1 || swapped == 1) {
      gap = gap * 10 / 1.3;
      if (gap == 9 || gap == 10) {
         gap = 11;
      }
      if (gap < 1) {
         gap = 1;
      }
      swapped = 0;
      for (i = 0, j = gap; j < n; i++, j++) {
         if (a[i] > a[j]) {
            temp = a[i];
            a[i] = a[j];
            a[j] = temp;
            swapped = 1;
         }
      }
   }
}
int main () {
   int n, i;
   int arr[] = { 5, 3, 4, 2, 1 };
   n=5;
   combsort(arr, n);
   for(i = 0;i < n;i++) {
      cout<<arr[i]<<"\t";
   }
   return 0;
}

  1. 奇偶転置(ブリックソート)のためのC / C ++プログラム?

    奇偶転置ソートとも呼ばれる奇偶転置ソートは、バブルソートと同様のソート手法です。この並べ替え手法は、奇数フェーズと偶数フェーズの2つのフェーズに細分されます。これらのフェーズはすべて、すべての要素が並べ替えられるまで、反復ごとに同時に行われます。 奇数フェーズ このプログラミング手法の一部はバブルソートとして機能しますが、インデックスが奇数の要素に対してのみ機能します。 同様に、偶数フェーズ インデックスが偶数の要素でのみ機能します。 この概念をより明確にするために、例を見てみましょう: Input: a[]={3,5,7,6,1,4,2} Output: 1 2 3 4 5 6 7 説

  2. 二分法のためのC++プログラム

    0であり、関数f(x)はaとbの間にある必要があります。つまりf(x)=[a、b ]。タスクは、二分法を使用して、関数f(x)の区間aとbの間にあるルートの値を見つけることです。 二分法とは何ですか? 二分法は、「a」と「b」で定義された指定された制限内の関数f(x)の根の値を見つけるために使用されます。関数の根は、f(a)=0となるような値aとして定義できます。 例 Quadratic equation F(x) =  - 8 This equation is equals to 0 when the value of x will be 2 i.e.  - 8 =