JavaA2Z

KAB-studio > プログラミング > JavaA2Z > アルゴリズムとは

アルゴリズム

日本語 解決手順
英語 algorithm
ふりがな あるごりずむ
フリガナ アルゴリズム

解説

ある処理をう際の手順。
特に、配列等の「複数個のデータ」を処理する際の手順を指す。
 
複数個のデータを処理する場合、その処理手順によって処理時間が異なる。
たとえば、ソート
ソートう場合、「どの要素とどの要素を比較するか」によって、「要素を比較する回数」が変わってくる。
要素の比較手順、つまり「アルゴリズム」によって、「要素を比較する回数」、つまり「処理の掛かる時間」が大きく異なる。
そのため、様々なアルゴリズムが生み出され、利用されている。
 
ただし、実際に使用するアルゴリズムは少ない。
ある程度速く、汎用的に使えるアルゴリズムであれば、たいがいの処理に使えるため、そのようなアルゴリズムを全般的に使用した方が良い。
また、「最速のアルゴリズム」は使用する場面が限定されている事も多く、あまり速さにこだわらない方が良い。
 
一般的なアルゴリズムは、J2SE実装されていたり、その他のライブラリに存在する場合も多い。
たとえばソートであれば、Arraysクラスのsort()メソッドクイックソート及び修正マージソートソートすることができる。
 
アルゴリズムは一般に複雑であり、注意して作らないとバグを生みやすい。また、Arraysクラスのsort()メソッドのような「ComparableインターフェイスComparatorインターフェイスを用いた汎用化」をわないと、ソートする対象毎にソートメソッドを作らなければならず無駄が出る。
アルゴリズムの研究や大学の課題等でアルゴリズムを作製するのはいいが、業務処理等にはすでに実装されているアルゴリズムを使用し、自作のものは使用しない方がいいだろう。

参考サイト


(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // 出力する配列を用意します。
        int[] ints = new int[]{ 4, 9, 3, 5, 8 };

        forint iF1 = 0; iF1 < ints.length; ++iF1 )
        {
            System.out.print( ints[iF1] + ", " );
        }
        System.out.println();
        // 4, 9, 3, 5, 8, 

        // バブルソートします。
        bubbleSort( ints );

        forint iF1 = 0; iF1 < ints.length; ++iF1 )
        {
            System.out.print( ints[iF1] + ", " );
        }
        System.out.println();
        // 3, 4, 5, 8, 9, 
    }

    /**
    *   最も簡単なソートアルゴリズム、バブルソートをします。
    */
    private static void bubbleSort( int[] array )
    {
        // 「入れ替え先」のループです。
        // 左端から1ずつ増えて、右端のひとつ前まで進みます。
        forint iOut = 0; iOut < array.length - 1; iOut++ )
        {
            // 右端から左端方向へのループです。
            // ただし「入れ替え先」までです。
            forint iIn = array.length - 1; iOut < iIn; iIn-- )
            {
                // ある要素と、その要素の「ひとつ左」を比較します。
                if( array[iIn] < array[iIn - 1] )
                {
                    // 「ひとつ左」の方が大きいので入れ替えます。
                    int iTemp = array[iIn];
                    array[iIn] = array[iIn - 1];
                    array[iIn - 1] = iTemp;
                }
            }
        }
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // 出力する配列を用意します。
        int[] ints = new int[]{ 4, 9, 3, 5, 8 };

        for( int iF1 = 0; iF1 < ints.length; ++iF1 )
        {
            System.out.print( ints[iF1] + ", " );
        }
        System.out.println();
        // 4, 9, 3, 5, 8, 

        // バブルソートします。
        bubbleSort( ints );

        for( int iF1 = 0; iF1 < ints.length; ++iF1 )
        {
            System.out.print( ints[iF1] + ", " );
        }
        System.out.println();
        // 3, 4, 5, 8, 9, 
    }

    /**
    *   最も簡単なソートアルゴリズム、バブルソートをします。
    */
    private static void bubbleSort( int[] array )
    {
        // 「入れ替え先」のループです。
        // 左端から1ずつ増えて、右端のひとつ前まで進みます。
        for( int iOut = 0; iOut < array.length - 1; iOut++ )
        {
            // 右端から左端方向へのループです。
            // ただし「入れ替え先」までです。
            for( int iIn = array.length - 1; iOut < iIn; iIn-- )
            {
                // ある要素と、その要素の「ひとつ左」を比較します。
                if( array[iIn] < array[iIn - 1] )
                {
                    // 「ひとつ左」の方が大きいので入れ替えます。
                    int iTemp = array[iIn];
                    array[iIn] = array[iIn - 1];
                    array[iIn - 1] = iTemp;
                }
            }
        }
    }
}

この単語を含むページ

「みだし」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/07/18
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。