C++ 程序执行笨鸟排序


笨鸟排序用于对给定数据进行排序。它是一种递归排序算法。笨鸟排序将数组分成两个重叠的部分,每个部分占 2/3,并通过先对 I 进行排序、然后对 II 进行排序、最后再对 I 部分进行排序这三个步骤对数组进行排序。该算法的最坏情况时间复杂度为 O(n^2.7095)。

算法

Begin
   Take input of data.
   Call StoogeSort() function with ‘a’ the array of data and ‘n’ the number of values, in the argument list.
   Implement Sorting using recursive approach.
   Divide the array into first 2/3 element as part I and last 2/3 as part II.
   Then send the first, second and again first part into StoogeSort().
   If the length is not further breakable then swap element at the start and end if a[end] < a[start].
   Return to main and display the result.
End.

示例代码

#include<iostream>
using namespace std;
void StoogeSort(int a[],int start, int end) {
   int temp;
   if(end-start+1 > 2) {
      temp = (end-start+1)/3;
      StoogeSort(a, start, end-temp);
      StoogeSort(a, start+temp, end);
      StoogeSort(a, start, end-temp);
   }
   if(a[end] < a[start]) {
      temp = a[start];
      a[start] = a[end];
      a[end] = temp;
    }
}
int main() {
   int m, i;
   cout<<"\nEnter the number of data element to be sorted: ";
   cin>>m;
   int arr[m];
   for(i = 0; i < m; i++) {
      cout<<"Enter element "<<i+1<<": ";
      cin>>arr[i];
   }
   StoogeSort(arr, 0, m-1);
   cout<<"\nSorted Data ";
   for (i = 0; i < m; i++)
      cout<<"->"<<arr[i];
   return 0;
}

输出

Enter the number of data element to be sorted: 4
Enter element 1: 6
Enter element 2: 7
Enter element 3: 3
Enter element 4: 2
Sorted Data ->2->3->6->7

更新于:2019 年 7 月 30 日

257 人次浏览

启动你的职业生涯

完成课程以获取认证

立即开始
广告