回复 28楼 lin5161678
对于 a[10]={10,9,8,7,6,5,4,3,2,1};用你的方法来判断,还是45次,并且代码中的 if(mask) break;根本不起作用,看来对于这个数列,用冒泡法来判断和交换都始终是45次了。
2018-05-23 17:34

2018-05-23 20:21
2018-05-23 21:07
程序代码:#include <stdio.h>
#include <time.h>
#include <stdlib.h>
typedef int E_T;
void sort( E_T *array, int l, int r );
int main( void )
{
E_T a[ 10 ]={10,9,8,7,6,5,4,3,2,1};
// srand( ( unsigned long )time( NULL ) );
/* for( int i = 0; i < 10; ++i )
{
a[ i ] = rand() % 1000;
printf( "%d ",a[ i ] );
}*/
printf( "\n" );
sort( a, 0, 10 );
for( int i = 0; i < 10; ++i )
printf( "%d ", a[ i ] );
return 0;
}
void sort( E_T *array, int l, int r )
{
int minix, maxix;
int R;
int c;
c=0;
for( ; l < r; ++l, --r )
{
for( minix = l + 1, maxix = r - 2, R = r - 1; minix <= R; ++minix, --maxix )
{
if( array[ l ] > array[ minix ] )
{
c++;
E_T temp = array[ l ];
array[ l ] = array[ minix ];
array[ minix ] = temp;
}
if( array[ R ] < array[ maxix ] )
{
c++;
E_T temp = array[ R ];
array[ R ] = array[ maxix ];
array[ maxix ] = temp;
}
}
}
printf("jiao huan %d ci",c);
}[此贴子已经被作者于2018-5-23 22:22编辑过]

2018-05-23 22:21
2018-05-23 23:07
~

2018-05-23 23:32
~

2018-05-23 23:48

2018-05-24 11:15
~

2018-05-24 11:17
[此贴子已经被作者于2018-5-24 11:45编辑过]

2018-05-24 11:28