奇偶転置(ブリックソート)のためのC / C ++プログラム?
奇偶転置ソートとも呼ばれる奇偶転置ソートは、バブルソートと同様のソート手法です。この並べ替え手法は、奇数フェーズと偶数フェーズの2つのフェーズに細分されます。これらのフェーズはすべて、すべての要素が並べ替えられるまで、反復ごとに同時に行われます。
奇数フェーズ このプログラミング手法の一部はバブルソートとして機能しますが、インデックスが奇数の要素に対してのみ機能します。
同様に、偶数フェーズ インデックスが偶数の要素でのみ機能します。
この概念をより明確にするために、例を見てみましょう:
Input: a[]={3,5,7,6,1,4,2} Output: 1 2 3 4 5 6 7
説明
奇偶転置ソートは、ブリックソートとも呼ばれ、並列処理を念頭に置いて設計された単純なソート手法です。比較を使用して要素を並べ替えます。比較は、年齢と要素を含むすべての奇数/偶数ペアで行われます。いずれかのペアの順序が間違っている場合は、順序が切り替えられて正しくなります。このプロセスは、リストがソートされるまで続きます。並列プロセス用に開発されたため、プロセッサごとに1つの値を使用でき、両方のプロセスが交換比較タイプの操作で同時に動作します。このアルゴリズムは元々提示されており、そのようなプロセッサで効率的であることが示されています
例
#include <stdio.h> #include <math.h> #define MAX 7 void swap(int *,int *); void oddeven_sort(int *); int main() { int a[]={3,5,7,6,1,4,2}, i; oddeven_sort(a); for (i = 0;i < MAX;i++) { printf(" %d", a[i]); } } void swap(int * x, int * y) { int temp; temp = *x; *x = *y; *y = temp; } void oddeven_sort(int * x) { int sort = 0, i; while (!sort) { sort = 1; for (i = 1;i < MAX;i += 2) { if (x[i] > x[i+1]) { swap(&x[i], &x[i+1]); sort = 0; } } for (i = 0;i < MAX - 1;i += 2) { if (x[i] > x[i + 1]) { swap(&x[i], &x[i + 1]); sort = 0; } } } }
出力
1234567
-
放物線の頂点、焦点、および直接線を見つけるためのC / C ++プログラム?
ここでは、CまたはC ++プログラムを使用して、放物線の頂点、フォーカスdirectrixを見つける方法を説明します。これらのパラメータを取得するには、放物線の一般方程式が必要です。一般式は-です。 𝑦 = 𝑎𝑥2 + 𝑏𝑥 + 𝑐 a、b、cの値が示されています。 頂点の式- フォーカスの式- Directrixの式--y− 例 #include <bits/stdc++.h> using namespace std; void getParabolaDetails(float a, float b, float c) {
-
奇偶転置/ブリックソート用のPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、ブリックソートを使用してソートする必要があります。 ここでは、奇数フェーズと偶数フェーズの2つのフェーズがあります。奇数フェーズでは、バブルソートは奇数のインデックス付き要素で実行され、偶数フェーズでは、バブルソートは偶数のインデックス付き要素で実行されます。 それでは、以下の実装のソリューションを見てみましょう- 例 def oddEvenSort(arr, n): # flag isSorted = 0 &nbs