`

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

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

    描述中提到的“还包含极其变态的Bogo法”,Bogo排序(Bogosort)是一种非常低效的随机排序算法,它的效率极其低下,通常被用来作为反面例子来教学。Bogo排序的工作原理是不断地打乱数组,直到数组变为有序。由于完全...

    计算机排序算法.pdf

    此外,还有一些不常用或者效率较低的排序算法,如Bogo排序和Stupid sort,它们的效率极低,通常只用于教学示例或娱乐目的。 排序算法的发展历史悠久,从早期的冒泡排序到现代的快速排序和Introsort,新的排序算法...

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

    博戈排序(Bogo-Sort),也被称为笨拙排序或愚蠢排序,是一种极其低效的随机排序算法。这个算法的基本思想是将数组中的元素随机排列,直到数组变为有序。由于其随机性和效率极低,它通常被用作教学示例,以帮助理解...

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

    本项目将聚焦于一种特殊的排序算法——BogoSort,它是通过随机洗牌的方式来尝试对数组进行排序,基于C语言实现。 **C语言** C语言是一种广泛使用的编程语言,以其简洁、高效和灵活的特点闻名。它被用作许多操作...

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

    本资料主要关注一种特殊的排序算法——BogoSort,它是以一种极其随机的方式进行排序的。 **BogoSort** BogoSort,又称为BozoSort或StoogeSort,是一种非常慢的排序算法,它的基本思想是不断地随机打乱数组,直到...

    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) 双重...

    聆听排序算法的声音

    压缩包中的“bogo_6_elements.mid”文件可能是一个MIDI文件,用以表现六元素的Bogosort(博戈排序)过程。Bogosort是一种非常低效的排序算法,它依赖于随机性,不断地打乱数组直到其偶然变得有序。因此,这个MIDI...

    常用排序算法介绍_示例程序|排序算法_程序.rar

    15. **Bogosort**:随机调整数组顺序,直到得到一个有序数组,是一种极其低效的算法,通常用于幽默和教学。 这些示例程序使用了TChart8控件,它允许用户可视化观察排序过程。TChart是一个强大的图表组件,可以创建...

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

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

    Bogosort:Bogosort用C ++实现

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

    侏儒排序 用c#

    侏儒排序,也被称为“矮人排序”或“Bogosort”,是一种极其不高效的排序算法,它的基本思想是将数组中的元素随机排列,直到数组变得有序。由于它依赖于随机性,所以它在最坏的情况下的时间复杂度是O(n!),这意味着...

    14种排序算法(C语言描述).rar

    13. 带洞排序(Bogosort):一种随机的排序算法,不断地打乱数组,直到数组变得有序。效率极低,通常作为反面教材。 14. 原地排序(In-place Sorting):是指排序过程中不额外占用内存的排序算法,如冒泡、插入、...

    常见排序算法pdf文档

    9. **猴子排序**(Bogo Sort):随机交换数组元素,直到得到有序数组。极其不可靠,平均时间复杂度为O(n!),实际应用中几乎不用。 10. **桶排序**(Bucket Sort):假设输入数据服从均匀分布,将数据分到有限数量的...

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

    **平行波果排序(Parallel Bogo Sort)**是一种在并行计算环境中实现的排序算法,其基础是**Bogo Sort**。Bogo Sort通常被视作一个极其低效的随机排序算法,它通过不断地随机打乱数组直到数组变得有序。在单线程环境...

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

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

    sorter:python中各种排序算法的实现

    4. 博戈排序(Bogo Sort): 博戈排序是一种极其随机的排序算法,其基本思想是不断地随机打乱序列,直到序列变为有序。由于其效率极低,通常只用作教学示例或娱乐用途。 - 随机交换序列中的两个元素,重复这个过程...

Global site tag (gtag.js) - Google Analytics