第一范文网 - 专业文章范例文档资料分享平台

数据结构课程设计排序算法总结

来源:用户分享 时间:2025/7/9 3:36:31 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

源代码:

#include #include

typedef struct //顺序表存储结构 {

int * elem; int length; }SqList;

int main(void) {

SqList L; SqList L1;

void InsertSort(SqList &L); void BInsertSort(SqList &L); 序

void BubbleSort(SqList &L); void SelectSort(SqList &L); 序

void QuickSort(SqList &L); 序

void QSort(SqList &L,int low,int high); int Partition(SqList &L,int low,int high);

void HeapSort(SqList &L); void HeapAdjust(SqList &L,int s,int m);

void MergeSort(SqList &L); 序

void MSort(SqList L,SqList &L1,int s,int t);

void Merge(SqList L,SqList &L1,int i,int m,int n);

int n; int * p;

printf(\请输入顺序表的长度:\ scanf(\

if((p=(int *)malloc((n+1)*sizeof(int)))==0) 存储空间 { printf(\.\\n\ exit(1); }

//直接插入排序 //折半插入排 //冒泡排序 //简单选择排 //快速排 //堆排序 //归并排//动态分配顺序表 L.elem=p; L.length=n;

if((p=(int *)malloc((n+1)*sizeof(int)))==0) //动态分配顺序表存储空间 { printf(\.\\n\ exit(1); }

L1.elem=p; L1.length=n;

printf(\请输入%d个整数:\\n\ 排序的数据

for(int i=1;i<=L.length;i++) scanf(\

printf(\选择排序算法:\\n\ printf(\直接插入排序\\n\ printf(\折半插入排序\\n\ printf(\冒泡排序\\n\

printf(\简单选择排序\\n\ printf(\快速排序\\n\

printf(\堆排序\\n\ printf(\归并排序\\n\

int change=0;

scanf(\

switch(change) { case 1: InsertSort(L);break;

case 2: BInsertSort(L);break; case 3: BubbleSort(L);break; case 4: SelectSort(L);break; case 5: QuickSort(L);break; case 6: HeapSort(L);break; case 7: MergeSort(L);break; default:break; }

//输入一组待 printf(\排序后为:\

for(i=1;i<=L.length;i++) printf(\ printf(\

return 0; }

void InsertSort(SqList &L) {

int i=0,j=0;

for(i=2;i<=L.length ;i++) if(L.elem[i]L.elem[0];j--) L.elem [j+1]=L.elem [j]; L.elem [j+1]=L.elem[0]; } }

void BInsertSort(SqList &L) {

int i=0,j=0,low=0,high=0,m=0; for(i=2;i<=L.length ;i++) { L.elem[0]=L.elem [i]; low=1; high=i-1; while(low<=high) { m=(low+high)/2; if(L.elem [0]>L.elem [m]) low=m+1; else high=m-1; } for(j=i-1;j>=high+1;j--) L.elem [j+1]=L.elem [j]; L.elem [high+1]=L.elem[0]; } }

//复制为哨兵

void BubbleSort(SqList &L) {

int i=0,j=0;

for(i=L.length;i>=2;i--) for(j=1;jL.elem [j+1]) { L.elem[0]=L.elem [j]; L.elem [j]=L.elem [j+1]; L.elem [j+1]=L.elem[0]; } } }

void SelectSort(SqList &L) {

int index=0;

for(int i=1;i<=L.length-1 ;i++) { index=i; for(int j=i+1;j<=L.length ;j++) if(L.elem [j]

//快排

int Partition(SqList &L,int low,int high) {

//将L.elem[low...high]一分为二

int pivot=0; 作枢轴

pivot=L.elem[low]; while(low=pivot)

//用子表第一个记录

搜索更多关于: 数据结构课程设计排序算法总结 的文档
数据结构课程设计排序算法总结.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c1sg5d8n4m11cf865cb96_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top