簡單排序的 改進
//簡單選擇排序源碼
void SelectSort( int a[], int n )
{
int i, j;
for( i = 0; i < n - 1; i++ )
{
for( j = i + 1;j < n; j++ )
if ( a[ i ] > a[ j ] )
{
int tmp = a[ j ];
a[ j ] = a[ i ];
a[ i ] = tmp;
}
}
}
void SelectSort_2(int r[],int n)
{
int i ,j , min ,max, tmp;
for (i=0 ;i < n/2; i++)
{
min = i; max = i ;
for( j = i + 1; j <= n - i; j++ )
{
if ( r[ j ] > r[ max ] )
{
max = j;
}
if ( r[ j ] < r[ min ] )
{
min = j;
}
}
tmp = r[ i ];
r[ i ] = r[ min ];
r[ min ] = tmp;
if ( max != i ) //此處需注意,如第二次交換的是已經進行過交換的下標要注意!!!
{
tmp = r[ n - i];
r[ n - i ] = r[max];
r[ max ] = tmp;
}
else
{
tmp = r[ n - i];
r[ n - i ] = r[min];
r[ min ] = tmp;
}
for (int k = 0; k <= n; k++ )
printf( "%d\t", r[ k ] );
printf( "\n");
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.