顺序表:
void Swap(int &a,int &b){
int temp;
temp=a;
a=b;
b=temp;
}
void SelectSort(int A[],int n){
int min,i,j;
for(i=0;i<n-1;i++){
min=i;
for(j=i+1;j<n;j++)
if(A[j]<A[min])
min=j;
if(min!=i)
Swap(A[i],A[min]);
}
}
单链表:
void SelectSort(Linklist &L){
LNode *p,*q,*current;
int min;
if(!L||!L->next)
return;
for(p=L;p;p=p->next){ //遍历p,让每次p的值都为最小
q=p; //q和current每次都重置
current=p;
min=p->data;
while(q){ //遍历q
if(q->data<min){
min=q->data; //最小值data赋给min
current=q; //current指向最小结点
}
q=q->next;
}
if(current!=p){ //首元不为最小则最小值data与首元互换
current->data=p->data;
p->data=min;
}
}
}