众所周知,有一个玄学排序算法,猴子排序,最好时间复杂度O(1),最坏时间复杂度O(infinity),平均时间复杂度O(n∗n!)。
众所周知,还有一个排序算法叫冒泡排序,时间复杂度为。
如果将他们融合起来会变成什么呢?
bobbgo排序:
code:
#include <bits/stdc++.h>
using namespace std;
int n,a[10001];
bool check(){
for(int i=0;i<n-1;i++) if(a[i]>a[i+1]) return 0;
return 1;
}
void print(){
for(int i=0;i<n;i++) cout<<a[i]<<" ";
}
int main(){
cin>>n;
for(int i=0;i<n;i++)cin>>a[i];
while(!check()){
int r=rand()%n,l=rand()%n;
if(r<l)swap(r,l);
if(a[r]<a[l]) swap(a[r],a[l]);
}
print();
}
原理:
随机选取两个数,进行比较,若符合则交换。
最好时间复杂度:O(1)
最坏时间复杂度:O(infinity)
平均时间复杂度: