簡單排序的 改進

//簡單選擇排序源碼 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");     }    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章