- 设计在链式结构上实现简单选择排序算法。(指针交换版)
void Csort(LinkList &l){
LNode *s=l,*prep=l,*p=l->next,*preMin=l,*min=p;
//s指针是表示已经有序序列的最后一个节点,是为了将找到的最小值插入到有序序列中
//prep与p指针分别是活动指针,之所以要设置prep是因为找到最小值后要有prepMin保证不断链
//preMin与min指针是找最小值的指针
while(p!=NULL){
//每一次都从无序序列第一个元素查找
min = p;
preMin = prep;
//整个就是一找最小值的操作
while(p!=NULL){
if(p->data<min->data){
preMin = prep;
min = p;
}
p = p->next;
prep = prep->next;
}
//这一步的操作是将最小值插入到有序序列表尾
preMin->next = min->next;
min->next = s->next;
s->next = min;
s = min;
//将活动指针置于原位
p = s->next;
prep = s;
}
}