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- - ;
}
}
def Memory_Selection_Sort(a):
b = [0]*(N+1)
t = {}
for i in range(1,N):
if stack == 0:
stack+=1
b[stack]=N
b[stack+1]=N-1
for j in range(b[stack+1],i-1,-1):
if a[b[stack]]['key'] > a[j]['key']:
stack+=1
b[stack] = j
if stack == N+1-i:
break
t = a[i]
a[i] = a[b[stack]]
a[b[stack]] = t
stack-=1
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632