顺序表:
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;} }
}