シェーカーソートを実行するC++プログラム
シェーカーソートは、指定されたデータをソートするために使用されます。シェーカーソートは、バブルソートとは異なり、配列を両方向に並べ替えます。このアルゴリズムの最悪の複雑さはO(n ^ 2)です。
アルゴリズム
Begin ShakerSort() function has ‘arr’ the array of data and ‘n’ the number of values, in the argument list. // Implement Sorting algorithm using nested for loops. The parent loop will run on ‘i’ from 0 to n-1 and contains two loops inside. The first loop will run on ‘j’ from i+1 to n-1 and use swap() if a[j] < a[j-1]. Decrement n. The second loop will run on 'k' from m-1 to i+1 and use swap() if a[k] < a[k-1]. Increment i. End
サンプルコード
#include<iostream> using namespace std; void swap(int *a, int *b) { int temp; temp = *a; *a = *b; *b = temp; } void ShakerSort(int a[], int m) { int i, j, k; for(i = 0; i < m;) { for(j = i+1; j < m; j++) { if(a[j] < a[j-1]) swap(&a[j], &a[j-1]); } m--; for(k = m-1; k > i; k--) { if(a[k] < a[k-1]) swap(&a[k], &a[k-1]); } i++; } } int main() { int n, i; cout<<"\nEnter the number of data element to be sorted: "; cin>>n; int a[n]; for(i = 0; i < n; i++) { cout<<"Enter element "<<i+1<<": "; cin>>a[i]; } ShakerSort(a, n); cout<<"\nSorted Data "; for (i = 0; i < n; i++) cout<<"->"<<a[i]; return 0; }
出力
Enter the number of data element to be sorted: 4 Enter element 1: 3 Enter element 2: 1 Enter element 3: 7 Enter element 4: 6 Sorted Data ->1->3->6->7
-
均一二分探索を実行するC++プログラム
ここでの均一二分探索では、ルックアップテーブルを使用して二分探索を実装します。テーブルルックアップはシフトと加算よりも高速であるため、これはバイナリ検索の改善です。このアプローチの時間計算量はO(log(n))です。 アルゴリズム Begin Assign the data to the array in a sorted manner. Calculate the maximum length of lookup array and declare a new array ‘del’. As
-
ストゥージソートを実行するC++プログラム
ストゥージソートは、指定されたデータをソートするために使用されます。これは再帰的なソートアルゴリズムです。ストゥージソートは、配列を2つの重なり合う部分(それぞれ2/3)に分割し、I、II、およびIの部分を並べ替えることにより、3つのステップで配列を並べ替えます。このアルゴリズムの最悪の場合の時間計算量はO(n ^ 2.7095)です。 アルゴリズム Begin Take input of data. Call StoogeSort() function with ‘a’ the array of data and ‘n’ the n