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