在链结构上实现简单选择排序
简单选择排序思想
对链表遍历的第i趟,就找到第i小的元素与第i个位置的元素进行交换,直至n-1趟后全部排序完成
- 设计三个指针,一个指向编号为i的节点,一个指向当前节点值最小的结点,一个进行访问
- 对链表进行遍历,每遍历一次进行元素的交换,直至排序完成
void simpleSort(LinkList &L){//简单选择排序
if(!L->next) return;//单链表为空
LNode *p=L->next;//指向首元结点
LNode *min,*q;//min指向每趟最小值结点
while(p->next){
q=p->next;
min=p;
while(q){
if(q->data<min->data){
min=q;
}
q=q->next;
}
if(min->data!=p->data){//数据不一则交换
int temp=min->data;
min->data=p->data;
p->data=temp;
}
p=p->next;
}
p=L->next;
}
经典的错误,标准的零分
在进行数据交换时,我对指针进行了交换
while(q)
if(q->data<min->data)
min=q;
if(min!=p)
{
temp=p;
p=min;
min=temp;
}