(最新版)数据结构毕业课程设计_排序算法比较【完整版】 联系客服

发布时间 : 星期一 文章(最新版)数据结构毕业课程设计_排序算法比较【完整版】更新完毕开始阅读

}

}

for(j=1;j<=L.length-i;j++) { }

if(L.r[j]>L.r[j+1]) { }

前面的数据>后面数据时

t=L.r[j+1];

L.r[j+1]=L.r[j]; L.r[j]=t; 将元素交换

return OK;

**************************************************** 快速排序

**************************************************** int Partition(Sqlist &L, int low, int low; }Partition函数

void Qsort (Sqlist &L,int low, int (L, low , ERROR;

}

Qsort(L,1,L.length); return OK;

}QuickSort

********************************************** 选择排序

********************************************** Status ChooseSort(Sqlist &L) {

int i,j,k,t; if(L.length==0) {

printf(\没有数据!\return ERROR;

13 }

}

for(i=1;i<=L.length;i++) 排序的趟数 { }

return OK;

k=i;

for(j=i+1;j<=L.length;j++) 比较第i个元素以及其后的数据中最小的 { }

if(i!=j) 将最小数据赋值给L.r[i] { }

t=L.r[i]; L.r[i]=L.r[k]; L.r[k]=t; if(L.r[j]

k=j;

**************************************** 堆排序 ****************************************

Status HeapAdjust(Sqlist &L,int s,int m) 调整L.r[s]的关键字,使L.r[s~m]成大顶堆 {

int i; L.r[0]=L.r[s];

for(i=2*s;i+1<=m;i*=2) 沿数据较大的孩子结点向下筛选 {

if(i

if(L.r[0]>=L.r[i]) L.r[0]插入在S位置上

i++;

14 }

}

break;

L.r[s]=L.r[i]; s=i;

插入新数据

L.r[s]=L.r[0]; return OK;

Status HeapSort(Sqlist &L) 堆排序 { }

************************************************** 基数排序

************************************************** typedef struct node{

int i,t;

if(L.length==0) { }

for(i=L.length2;i>0;i--)

for(i=L.length;i>1;i--) { }

return OK;

t=L.r[1]; 将堆顶记录和当前未经排序的子序列L.r[1..i]中最后一个记录互换 L.r[1]=L.r[i]; L.r[i]=t;

HeapAdjust(L,1,i-1); 将L.r[1..i-1]重新调整为大顶堆 HeapAdjust(L,i,L.length); printf(\没有数据!\return ERROR;

15

int key; node *next;

RadixSort(Sqlist L)

}RecType; Status { }

int t,i,j,k,d,n=1,m;

RecType *p,*s,*q,*>0) 将每个元素分配至各个链队 { } i=1;

while(p!=NULL) 将链表转换为顺序表 { }

return OK;

L.r[i]=p->key; i++; p=p->next;

for(j=0;j<10;j++) 初始化各链队首、尾指针 { m=1;

while(m<=L.length) 判断当L中的元素都除d后是不是都为零了 { }

if((L.r[m]d)!=0) { } else

m++; n++; m++;

=0;

16