void Memory_Selection_Sort(struct record a[]) / / a[i].key 为第 i 记录的比较关键字, 元素个数为 N。
{ int b[N+1] ; / /数组做堆栈, 保存已比较的有序序列的下标, b[0]闲置。
struct record t ; / /用于记录交换时的临时变量。
for( i=1J i < N; i++ ) ;
{ if( stack = = 0 ) { stack++ ; b[stack]=N ; b[stack+1]=N- 1; } / /空栈时, 初始的比较位置入栈。
for( j = b[stack+1] ; j >= i ; j- - )
if( a[b[stack]].key > a[j].key ) {stack++J b[stack] = j;} / /新记录的序号(这里是下标)入栈。
if( stack = = N+1- i ) break; / /提前结束的情况
t = a[i]; a[i] = a[b[stack]]; a[b[stack]] = t;
stack- - ;
}
}
到底哪一段啊?