Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ cho BogoSort hoặc Permutation Sort?

Ở đây chúng ta sẽ thấy một thuật toán sắp xếp khác được gọi là Bogo Sort. Sắp xếp này còn được gọi là sắp xếp hoán vị, sắp xếp ngu ngốc, sắp xếp chậm, v.v. Thuật toán sắp xếp này là kỹ thuật sắp xếp đặc biệt không hiệu quả. Điều này nằm trong mô hình tạo và kiểm tra. Nó liên tục tạo ra một hoán vị cho đến khi nó được sắp xếp. Quan niệm là rất thẳng về phía trước. Cho đến khi danh sách được sắp xếp, chỉ cần xáo trộn các phần tử.

Thuật toán

bogoSort (mảng, n)

Begin
   while the arr is not sorted, do
      shuffle arr
   done
End

Ví dụ

#include<iostream>
#include<cstdlib>
using namespace std;
bool isSorted(int arr[], int n) { //check whether the list is sorted
   or not
   while (--n > 1)
      if (arr[n] < arr[n - 1])
   return false;
return true;
}
void shuffle(int arr[], int n) {
   for (int i = 0; i < n; i++)
      swap(arr[i], arr[rand() % n]);
}
void bogoSort(int arr[], int n){
   while (!isSorted(arr, n))
      shuffle(arr, n);
}
main() {
   int data[] = {54, 74, 98, 5, 98, 32, 20, 13, 35, 40};
   int n = sizeof(data)/sizeof(data[0]);
   cout << "Sorted Sequence ";
   bogoSort(data, n);
   for(int i = 0; i <n;i++){
      cout << data[i] << " ";
   }
}

Đầu ra

Sorted Sequence 5 13 20 32 35 40 54 74 98 98