回复 20楼 九转星河
为啥我一次都没奔溃。你把后缀改成.c。
貌似有个地方越界了
[此贴子已经被作者于2018-5-25 15:42编辑过]

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
[此贴子已经被作者于2018-5-25 15:42编辑过]

2018-05-25 15:40
~

2018-05-25 15:43
[此贴子已经被作者于2018-5-25 15:50编辑过]

2018-05-25 15:46
2018-05-25 19:07

2018-05-25 19:16

2018-05-25 19:18
2018-05-25 19:20

2018-05-25 19:21
程序代码:#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 ];
srand( ( unsigned long )time( NULL ) );
for( int i = 9; i >=0; i-- )
{
a[ i ] = i;//只改了这儿赋值。
printf( "%d ",a[ i ] );
}
printf( "\n" );
sort( a, 0, 10 );
for( int i = 0; i < 10; ++i )
printf( "%d ", a[ i ] );
printf( "\n" );
printf( "\n" );
printf( "\n" );
return 0;
}
void sort( E_T *array, int l, int r )
{
int minix, maxix;
int R;
int c;
// int f;
int s;
s = 0;
if( l >= r )
return;
for( int ix = l; ix < r -1; ix++ )
{
if( array[ ix ] <= array[ ix + 1 ] )
{
s++;
if( s <= 0 )
break;
}
else if( array[ ix ] > array[ix + 1 ] )
{
s--;
if( s >= 0 )
break;
}
else
break;
}
c=0;
if( s == r - l - 1 )
{
printf("jiao huan %d ci\n",c);
return;
}
else if( s == l - r + 1)
{
for(r -= 1 ; l < r; l++,r-- )
{
c++;
E_T temp = array[ l ];
array[ l ] = array[ r ];
array[ r ] = temp;
}
}
else
{
for( ; l < r; ++l, --r )
{
// f = 0;
for( minix = l + 1, maxix = r - 2, R = r - 1; minix <= R; ++minix, --maxix )
{
if( array[ l ] > array[ minix ] )
{
c++;
// f++;
E_T temp = array[ l ];
array[ l ] = array[ minix ];
array[ minix ] = temp;
}
if( array[ R ] < array[ maxix ] )
{
c++;
// f++;
E_T temp = array[ R ];
array[ R ] = array[ maxix ];
array[ maxix ] = temp;
}
}
/* if( f == 0 )
sort( array, l + 1, r - 1 );*/
}
}
printf("jiao huan %d ci\n",c);
}
2018-05-25 19:24

2018-05-25 19:27