求一个用C语言或C++编写的数据结构中的快速排序、、麻烦写出大概的设计过程,语句的含义、谢谢;啦!!!

2025-01-06 02:12:02
推荐回答(2个)
回答1:

#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(iele[j])j--;
if(i r->ele[i]=r->ele[j];
i++;
}
while(i=r->ele[i])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 pos=QKPass(r,low,high);

for(i=1;ilen;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;ilen;i++){
k=i;
for(j=i+1;jlen;j++){

if(r->ele[j]ele[k]){

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;nlen;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);
}

回答2:

用双链表,你可以选择数据结构中的某一个量进行排序。