カクテルソート用のC++プログラム?
カクテルソートは、バブルソートのもう1つのバリエーションです。バブルソート手法では、常に左から右に検索し、最後に最大の要素を見つけます。2番目のフェーズでは、最後から2番目の位置にある2番目に大きい要素を見つけます。このソート手法は、交互に両方向にトラバースします。アイデアを理解するためのアルゴリズムを見てみましょう。
アルゴリズム
カクテル(配列、n)
Begin flag := true start := 0, end := n-1 while flag is set, do flag := false for i in range start to end-1, do if arr[i] > arr[i+1], then exchange arr[i] and arr[i+1] flag := true end if done if flag is not set, then break end if flag := false end := end – 1 for i in range end -1 down to start, do if arr[i] > arr[i+1], then exchange arr[i] and arr[i+1] flag := true end if done start := start + 1 done End
例
#include<iostream>
using namespace std;
void cocktailSort(int arr[], int n){
bool flag = true;
int start = 0, end = n-1;
while(flag){
flag = false;
for(int i = start; i<end; i++){ //scan from left to right as bubble sort
if(arr[i] > arr[i+1]){
swap(arr[i], arr[i+1]);
flag = true;
}
}
if(!flag){ //if nothing has changed simply break the loop
break;
}
flag = false;
end--; //decrease the end pointer
for(int i = end - 1; i >= start; i--){ //scan from right to left
if(arr[i] > arr[i+1]){
swap(arr[i], arr[i+1]);
flag = true;
}
}
start++;
}
}
main() {
int data[] = {54, 74, 98, 154, 98, 32, 20, 13, 35, 40};
int n = sizeof(data)/sizeof(data[0]);
cout << "Sorted Sequence ";
cocktailSort(data, n);
for(int i = 0; i <n;i++){
cout << data[i] << " ";
}
} 出力
Sorted Sequence 13 20 32 35 40 54 74 98 98 154
-
QuickSort用のC++プログラム?
クイックソートは、比較を使用してソートされていないリスト(配列)をソートするソート手法です。クイックソートは、パーティション交換ソートとも呼ばれます。 等しいソート項目の相対的な順序が保持されないため、安定したソートではありません。クイックソートは配列を操作できるため、ソートを実行するために少量の追加メモリが必要です。常に最悪の場合のパーティションを選択するわけではないことを除いて、選択ソートと非常によく似ています。したがって、選択ソートのより適切な形式と見なすことができます。 QuickSortは、最も効率的な並べ替えアルゴリズムの1つであり、配列を小さい配列に分割することに基づいていま
-
カクテルソート用のPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが与えられたので、与えられたリストに対してビットニックソートを実行し、リストを表示する必要があります シェーカーソート −ここでは、ソートはバブルソートのように行われ、反復は両方向で行われます。 アルゴリズム まず、配列が左から右にトラバースされます。トラバーサル中に、隣接するアイテムが比較され、条件に基づいて値が交換されます。これにより、最大数はアレイの最後になります。 これで、配列は反対方向にトラバースされ、条件に基づいて要素が交換されます。これにより、最小数が最初になります。 次に、以下