zoukankan      html  css  js  c++  java
  • 猴子排序 然而并没有什么用 233

    计算机科学中,Bogo排序(bogo-sort)是个既不实用又原始的排序算法,其原理等同将一堆卡片抛起,落在桌上后检查卡片是否已整齐排列好,若非就再抛一次。其名字源自Quantum bogodynamics,又称bozo sort、blort sort或猴子排序(参见无限猴子定理)。

    //qscqesze
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <ctime>
    #include <iostream>
    #include <algorithm>
    #include <set>
    #include <vector>
    #include <sstream>
    #include <queue>
    #include <typeinfo>
    #include <fstream>
    #include <map>
    #include <stack>
    typedef long long ll;
    using namespace std;
    //freopen("D.in","r",stdin);
    //freopen("D.out","w",stdout);
    #define sspeed ios_base::sync_with_stdio(0);cin.tie(0)
    #define maxn 200001
    #define mod 10007
    #define eps 1e-9
    //const int inf=0x7fffffff;   //无限大
    const int inf=0x3f3f3f3f;
    /*
    
    int buf[10];
    inline void write(int i) {
      int p = 0;if(i == 0) p++;
      else while(i) {buf[p++] = i % 10;i /= 10;}
      for(int j = p-1; j >=0; j--) putchar('0' + buf[j]);
      printf("
    ");
    }
    */
    //**************************************************************************************
    inline ll read()
    {
        int x=0,f=1;char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
        return x*f;
    }
    int a[maxn];
    int b[maxn];
    int vis[maxn];
    int n;
    int cnt=0;
    int main()
    {
        n=read();
        for(int i=0;i<n;i++)
            a[i]=read();
        while(1)
        {
            for(int i=0;i<n;i++)
                b[i]=a[i];
            int flag=0;
            for(int i=0;i<n-1;i++)
                if(b[i]>b[i+1])
                {
                    flag=1;
                    break;
                }
            if(!flag)
                break;
            cnt++;
            memset(vis,0,sizeof(vis));
            for(int i=0;i<n;i++)
            {
                while(1)
                {
                    int k=rand()%n;
                    if(vis[k])
                        continue;
                    a[i]=b[k];
                    vis[k]=1;
                    break;
                }
            }
        }
        cout<<cnt<<endl;
        for(int i=0;i<n;i++)
            cout<<a[i]<<" ";
        cout<<endl;
    }
  • 相关阅读:
    ios 写项目的时候遇到的问题及解决方案(1)
    思绪锦集
    iOS学习-----真机测试过程
    StackOverflow程序员推荐的几本书籍
    关于算法学习的重要性
    程序的灵魂-算法
    C++ 之 const 随笔记
    Foundation 框架之——NSString、NSMutableString
    Objective-C之NSString和NSMutableString
    Objective-C之集合对象(NSSet,NSMutableSet,NSIndexSet)
  • 原文地址:https://www.cnblogs.com/qscqesze/p/4440412.html
Copyright © 2011-2022 走看看