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