`

Bogo排序

阅读更多

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

#include<stdio.h>    
#include<string.h>   
#include<math.h>   
#include<ctype.h>   
#include<stdbool.h>
#include<stdlib.h>
#include<time.h>

void swap(int *a, int *b)   //交换两元素的值
{
    int t;
    t=*a;
    *a=*b;
    *b=t;
}

void printArray(int a[], int count)   //打印数组元素
{
    int i;
    for(i=0; i<count; i++)
        printf("%d ",a[i]);
    printf("\n");
}

unsigned int Random1(int a, int b)  //随机生成[a,b)之间的数
{
    return (rand()%(b-a)+a);
}

unsigned int Random2(int n)  //随机生成[0,n)之间的数
{
    return (rand()%n);
}

bool inorder(int a[], int n)  //判断序列是否已经有序
{
    int i;
    for(i=0; i<n; i++)
    {
        if(a[i] > a[i+1])  return false;
    }
    return true;
}

void shuffle(int a[], int n)
{
    int i,swapPosition;
    for(i=0; i<n; i++)
    {
        swapPosition = Random2(i+1);
        swap(&a[i],&a[swapPosition]);
    }
}
 
void bogo_sort(int a[], int n)
{
    while(!inorder(a,n))
        shuffle(a,n);
}

int main(void)   
{
    int a[]={3, 5, 4, 6, 9, 7, 8, 0, 1};
    int n=sizeof(a)/sizeof(*a);
    srand((unsigned)time(NULL));  
    printArray(a,n);
    bogo_sort(a,n);
    printArray(a,n);    
    return 0;
}

 

分享到:
评论

相关推荐

    Bogo:Python 中的 Bogobogosort

    宝高 两种最有效的排序算法 Bogosort 和 Bogobogosort 的简单实现。 用于测试内置 Python 排序与 Bogo 与 Bogobogo 的速度的可选代码。 #TODO 实施 Quantum Bogosort

    Bogo-Sort:用 Python 和 C 编写的 BogoSort 算法

    BogoSort 遵循一个简单的两步过程: 第一步:检查列表是否排序。 如果是,返回。 除此以外... 第二步:......洗牌列表并返回第一步!用法 python3 main.py或者 make; ./BogoSortBogoSort 将生成您指定的长度列表并...

    Bogo-Sort:使用低效的排序算法

    博戈排序 使用低效的排序算法。 这是一个相当古老的项目,从我在学校的第一年开始。

    排序算法-基于Java实现的排序算法之BogoSort实现.zip

    排序算法 排序算法_基于Java实现的排序算法之BogoSort实现

    排序算法-基于C语言实现的排序算法之BogoSort实现.zip

    排序算法 排序算法_基于C语言实现的排序算法之BogoSort实现

    rust-sorts:使用全面的测试和基准测试,在Rust中实现常见的排序算法

    这包括mergesort,quicksort,heapsort,插入排序,选择排序,冒泡排序甚至bogo排序。 该库附带了不同大小的向量和已经排序的向量或所有元素均等的向量的基准。 该库还带有QuickCheck测试,用于检查排序算法的结果...

    算法可视化:好玩

    Bogo排序 O(n·n!)[∞] 上) 是 Time complexity(Average) Space complexity(Auxiliary) 图[TODO] 最低成本生成树 原始 克鲁斯卡尔 最短路径问题迪克斯特拉 拓扑排序 数据挖掘 聚类分析 决策树 人工神经网络 ...

    算法:竞争性编程所需的算法

    内容:搜索算法线性搜寻二进制搜索三元搜索排序算法气泡排序选择排序插入排序合并排序快速分类基数排序Bogo排序最短路径算法迪克斯特拉弗洛伊德·沃沙尔通用数据结构堆队列叠数组链表使用的语言: C ++ PythonJavaC ...

    python 实现 排序 课程设计 代码

    乱序排序(Bogo Sort) 冒泡排序(Bubble Sort) 桶排序(Bucket Sort) 环形排序(Circle Sort) 鸡尾酒排序(Cocktail Shaker Sort) 梳排序(Comb Sort) 计数排序(Counting Sort) 循环排序(Cycle Sort) 双重...

    Bogosort:Bogosort用C ++实现

    Bogosort 用C ++实现基本上,为程序提供未排序数字的列表,它将对它们进行排序...通过选择两个随机索引并一遍又一遍地交换它们,直到列表最终被排序:) #如何使用确保已安装最新版本的g ++,并使用make编译可以使用....

    各种排序过程的图形化演示(Javascript写)

    Javascript写的各种排序过程的图形化演示,生动形象 还包含极其变态的Bogo法……

    sorting-visualizer:使用ReactJS构建的排序算法可视化工具

    排序展示台 可视化使用ReactJS构建的排序算法的工具() ...:check_mark_button: 合并排序(就地) :wrench: 计数排序 :wrench: 基数排序 :wrench: 时间排序 :wrench: Bogosort 颜色代码 数组中的泛

    Parallel_Bogo_Sort:Bogo Sort在某些并行框架中的实现

    平行波果排序 Bogo Sort在以下位置实现: 顺序的 OpenMP的 库达 跑步: $ make $ ./main

    bogobogo:node.js 中的 Bogobogosort 实现

    如果它们已排序,则n增加 1,除非n已包含整个数组,在这种情况下,排序已完成。 返回步骤 1。 快速地 这个版本要快得多,因为它会尝试对数组段进行 ∞ 次而不是 1 次排序。这仍然会产生 O(∞) 的最坏情况,但平均...

    Bubble_vs._stupid:冒泡排序和愚蠢排序的比较

    Bubble_vs._stupid 冒泡排序和愚蠢排序的比较。 比较这些算法的排序时间。 每一个对包含 100 个随机元素的列表进行排序。 这是关于冒泡排序: : 这是关于愚蠢的(也称为 bogo): :

    super-simple-sortr

    BogoSort 鸡尾酒摇床排序 梳理排序 计数排序 堆排序 堆排序 插入排序 选择排序 合并排序 快速排序 壳排序 最后是Timsort 要运行该应用程序,只需克隆不同的文件并运行“ main.py” 该程序是用Python 2.7制作的

    AlgoVis:算法可视化webapp

    AlgoVis 适用于Fullstack Open 2020项目的Algorith可视化Web应用当前支持的算法泡泡排序迭代排序快速排序合并排序笑话算法Bogosort 斯大林排序工作时间日期工作时间工作时间(h) 完成工作总使用时间20.12.20 13.30-...

    Sorts:一些排序算法的时序测试

    排序一些排序算法的时序测试对不起,界面不是很直观……希望如果你能阅读代码,你就能弄清楚如何运行它。 我建议您将输出重定向到一个文件(扩展名为 .csv)并使用电子表格打开。 或者在 GnuPlot 中绘图! 例如使用...

    算法:各种有用的算法和数据结构及其Java实现的集合

    演算法 该存储库是各种有用的算法和数据结构及其Java实现的集合,旨在用于教育...Bogosort 正在搜寻 线性的 二元 订单统计 排序选择 随机选择 堆选择 快速选择 弦乐 字符串搜索 Aho-Corasick Z算法 克努斯·莫里斯

Global site tag (gtag.js) - Google Analytics