#include
#include
#define SIZE 20
typedef struct{
int ele[SIZE];
int len;
}Record;
void InitRecord(Record *h,int *a){
int i=0;
h->len=0;
while(a[i]!=0){
h->ele[i+1]=a[i];
i++;
h->len++;
}
}
int QKPass(Record *r,int low,int high){
int i=low,j=high,x;
x=r->ele[i];
while(i
while(i
if(i
i++;
}
while(i
if(i
r->ele[j]=r->ele[i];
j--;
}
}
r->ele[i]=x;
return i;
}
void QKSort(Record *r,int low,int high){
int pos,i;
if(low
for(i=1;i
printf("%d ",r->ele[i]);
printf("\n \n");
QKSort(r,low,pos-1);
QKSort(r,pos+1,high);
}
}
void SelectSort(Record *r){
int i,k,j,n;
for(i=1;i
k=i;
for(j=i+1;j
if(r->ele[j]
r->ele[j]=r->ele[k]+r->ele[j];
r->ele[k]=r->ele[j]-r->ele[k];
r->ele[j]=r->ele[j]-r->ele[k];
}
}
for(n=1;n
printf("%d ",r->ele[n]);
printf("\n \n");
}
}
void main(){
Record r;
int a[14]={12,54,36,27,28,15,19,37,90,23,54,78,0};
//r=(Record*)malloc(sizeof(Record));
InitRecord(&r,a);
//QKSort(&r,1,r.len);
SelectSort(&r);
}
用双链表,你可以选择数据结构中的某一个量进行排序。