男は黙ってボゴソート

馬鹿らしいソートなんだけど、アイデアが面白い!
しかし、O(n*n!)ってすごいですね。

下のサンプルはとりあえずWikipediaにかいてあったトランプの例をやってみました。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void bogosort(int d[],int n)
{
    int h=1,i,j,*k,*l;
    k = (int *)malloc(sizeof(int)*n);
    l = (int *)malloc(sizeof(int)*n);
    memcpy(k,d,sizeof(int)*n);
    while(h)
    {
        for(i=0;i<n;i++)
        {
            j=rand()%(i+1);
            l[i]=l[j];
            l[j]=i;
        }
        for(i=1,d[0]=j=k[l[0]];i<n;i++)
        {
            if(j>k[l[i]])break;
            d[i]=j=k[l[i]];
            if(i==(n-1)) h=0;
        }
    }
    free(k);
    free(l);
}

int main(void)
{
    int list[] = { 132,45123,3462,36,43,5,2352,536,234,574 };
    int i,size = sizeof(list) / sizeof(int);
    bogosort(list,size);
    for(i=0;i<size;i++) printf("%d\n",list[i]);

    return(0);
}

 

関連記事

  • Linuxで動作するCプログラムのデバッグ環境構築2Linuxで動作するCプログラムのデバッグ環境構築2 前回の「Linuxで動作するCプログラムのデバッグ環境構築1」から引き続きます。 今回は、Eclipseを使って、Cのプロジェクトを作ってコンパイルしてみるところまで行ってみたいと思います。 では、さっそく解説をはじめます。 今回は図をふんだんに使って分かりやすく説明します! プロジェクトを作成しよう 1 Eclipseを開きましたら、左のプロジェクトの部分で右クリッ […] Posted in Linux
  • C言語のアドレス演算子の不思議C言語のアドレス演算子の不思議 前々から、C言語のポインタで不思議だったこと。 最適化C 言語 […] Posted in プログラミング
  • Linuxで動作するCプログラムのデバッグ環境構築1Linuxで動作するCプログラムのデバッグ環境構築1 こんにちはー! 今回は、Linuxで動作するCのデバッグ環境の整え方をお話しします。 皆さんは、Raspberry PiとかのLinux上で動作するプログラムを作るときにどうしていますか、 Raspberry Pi 上で make […] Posted in Linux
  • DirectXとOpenGLのカリングの設定方法の違いDirectXとOpenGLのカリングの設定方法の違い はじめに こんにちはー! 今日は、3D描写するときのテストの話をします。 テストと聞いて何を思い浮かびますでしょうか。 試験とか、勉強とかそんなことをきっと思い浮かべるでしょう。 作成した3Dポリゴンの頂点を描写するときも、 本当に描写していいのか、無駄ではないのか試験をしています。 いくつかテスト方法を紹介しましょう。 ・背面カリング(裏面カ […] Posted in アルゴリズム
  • DirectXとOpenGLのビューポート行列の違いDirectXとOpenGLのビューポート行列の違い はじめに こんにちは! 3DCGの再勉強中のなたでです! 今まで、次の変換行列の違いをみてきました。 ・DirectXとOpenGLのビュートランスフォーム行列の違い ・DirectXとOpenGLの射影トランスフォーム行列の違い 本日は変換の最後のビューポート行列の違いを調べてみましょう。 といっても、ここまでくると右手座標系・左手座標系という話はなくなっているので、 […] Posted in アルゴリズム
  • DirectXとOpenGLの射影トランスフォーム行列の違いDirectXとOpenGLの射影トランスフォーム行列の違い はじめに こんにちは! 引き続いて座標変換の話をします。 本日は射影トランスフォーム行列を覗いてみましょう。 前回の関連記事(予備知識として下から上に読んでおきましょう) ・DirectXとOpenGLのビュートランスフォーム行列の違い ・3DCGの座標系の紹介 ・DirectXとOpenGLの回転行列、回転軸、回転方向 数式の比較 . DirectXとOpenGL […] Posted in アルゴリズム