コムソート

本日のアルゴリズムは【コムソート】です。
別名、櫛ソートなどとも呼ばれるこのソートは先日話したシェーカーソートと同じくバブルソートの改良版です。
このコムソートですが、バブルソートやコムソートよりも断然速いソートアルゴリズムになっております。
このソートはデータをまずは大雑把に並べて、そのあとを少しずつ細かい部分まできれいに並べていきます。

#include

coid ComSort( int *array, int array_length );

void main()
{
    int array[10] = { 8, 5, 9, 3, 6, 1, 4, 2, 7, 0 };
    int i;

    ComSort( &array, 10 );

    for( i = 0; i < 10; i++ ) {
        printf( "%d\n", array[i] );
    }
}

void ComSort( int *array, int array_length )
{
    int length = array_length / 1.3;
    int swaps;
    int i;
    int w -0;

    while(1){
        swaps = 0;
        for( i = 0; i + length < array_length; i++ ) {
            if( *(array + i + length) < *(array + i) ) {
                w = *( array + i + length );
                *( array + i + length ) = *( array + i );
                *( array + i ) = w;
                swaps++;
            }
        }
        if( length == 1 ) {
            if( swaps == 0 ) {
                break;
            }
        }else{
            length /= 1.3;
        }
    }
}

にほんブログ村 IT技術ブログへ
にほんブログ村
にほんブログ村 IT技術ブログ プログラム・プログラマへ
にほんブログ村