#include <stdio.h>

void merge( int a[], int left, int mid, int right );
void mergesort( int a[], int left, int right );

int main( void )
{
int a[ 10 ] = { 5, 4, 3, 2, 1 ,10,51,66,9,54}, i;

mergesort( a, 0, 10 );
for ( i = 0; i < 10; ++i )
printf( "%d ", a[ i ] );
system("PAUSE");
return 0;

}

void mergesort( int a[], int left, int right )
{
if ( right > left ) {
int mid = ( right + left ) / 2;

mergesort( a, left, mid );
mergesort( a, mid + 1, right );
merge( a, left, mid, right );
}

}

void merge( int a[], int left, int mid, int right )
{
int aux[ right - left + 1 ], i = left, j = mid + 1, k;

for ( k = 0; k <= right - left; ++k ) {
if ( i == mid + 1 ) {
aux[ k ] = a[ j++ ];
continue;
} else if ( j == right + 1 ) {
aux[ k ] = a[ i++ ];
continue;
} else
aux[ k ] = a[ i ] < a[ j ] ? a[ i++ ] : a[ j++ ];
}
for ( i = 0, j = left; j <= right; ++i, ++j )
a[ j ] = aux[ i ];
}


可麻煩幫解釋
這應該去GOOGLE找答案..怎會在這邊發帖 怪怪的
一開始先宣告依些變數 哪些就在框框裡
FOR I++ 就是跑回圈
PRINTF 就是輸出結果

大致上就是這樣...詳細我就不知道了
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!