当前位置:首页 > 大数据结构课程设计_排序算法比较【完整版】
}
k=k; if(head[k]==NULL) //进行分配 { head[k]=p; tail[k]=p; } else { tail[k]->next=p; tail[k]=p; } p=p->next; //取下一个待排序的元素 }
p=NULL; //用于收集第一个元素时的判断
for(j=0;j<10;j++) //对每一个链队循环, 搜集每一个元素 { if(head[j]!=NULL) //进行搜集 { if(p==NULL) { p=head[j]; q=tail[j]; } else { q->next=head[j]; q=tail[j]; } } }
q->next=NULL; //最后一个结点的next置为空 d=d*10; n=0; m=1;
while(m<= //判断当L中的元素都除d后是不是都为零了 { if([m]/d)!=0) { n++; m++; } else m++; }
i=1; while(p!=NULL) //将链表转换为顺序表 { [i]=p->key; i++; p=p->next; } return OK; }
//************************************** // 主函数 //************************************** void main() { Sqlist L; Sqlist L0; InitSqlist(L); //初始化L InitSqlist(L0); int m,i; char choice='z'; clock_t start, finish; //定义clock_t用于计时 double duration; //向L中输入元素 printf(\n █████████████████████████████████████\\n\ printf(\ \\n\ printf(\ 算法排序比较系统 \\n\ printf(\ \\n\ printf(\ █████████████████████████████████████\\n\ printf(\ 以下是各个排序算法的代号:\\n\\n\ printf(\ 1、直接插入排序 \\n\ printf(\ 2、折半插入排序 \\n\ printf(\ 3、起泡排序 \\n\ printf(\ 4、快速排序\\n\ printf(\ 5、选择排序\\n\ printf(\ 6、堆排序\\n\ printf(\ 7、基数排序\\n\ printf(\ 8、退出该系统\\n\\n\ ScanfSqlist(m,L0); printf(\ printf(\ 1、直接插入排序 \\n\ printf(\ 2、折半插入排序 \\n\
printf(\ 3、起泡排序 \\n\ printf(\ 4、快速排序\\n\ printf(\ 5、选择排序\\n\ printf(\ 6、堆排序\\n\ printf(\ 7、基数排序\\n\ printf(\ 8、退出该系统\\n\\n\ printf(\请选择排序的方式,数字1-7: \ scanf(\ //选择排序方式赋值choice,用于后面的函数选择 while(choice<1||choice>8) { printf(\输入方式有误。\\n请输入1-7选择排序方式,或者选择8退出系统\ scanf(\ } while(choice!=8) { for(i=1;i<=;i++) [i]=[i]; =; switch(choice) { case 1://直接插入排序 start = clock(); InsertSort(L); finish = clock(); break; case 2://折半插入排序 start = clock(); BInsertSort(L); finish = clock(); break; case 3://起泡排序 start = clock(); BubbleSort(L); finish = clock(); break; case 4://快速排序 start = clock(); QuickSort(L); finish = clock(); break; case 5://选择排序 start = clock(); ChooseSort(L); finish = clock();
break; case 6://堆排序 start = clock(); HeapSort(L); finish = clock(); break; case 7://基数排序 start = clock(); RadixSort(L); finish = clock(); break; case 8://直接退出 break; } PrintfSqlist(m,L); //输出数据和L的长度 duration = (double)(finish - start) / CLOCKS_PER_SEC; //输出算术时间 printf(\本次排序运算所用的时间是:%lf seconds\\n\
printf(\ 本次排序结束。\\n\ printf(\
___________________________________________________________________\\n\ printf(\ 继续本系统吗\\n\\n\
printf(\ 以下是各个排序算法的代号:\\n\ printf(\ 1、直接插入排序\\n\ printf(\ 2、折半插入排序\\n\ printf(\ 3、起泡排序\\n\ printf(\ 4、快速排序\\n\ printf(\ 5、选择排序\\n\ printf(\ 6、堆排序\\n\
printf(\ 7、基数排序\\n\ printf(\ 8、退出该系统\\n\ printf(\请请输入1-7选择排序方式,或者选择8退出系统:\ scanf(\ while(choice<1||choice>8) { printf(\输入方式有误。\\n请输入1-7选择排序方式,或者选择8退出系统\ scanf(\ } }
}
共分享92篇相关文档