收藏 分享(赏)

c语言各种排序举例.doc

上传人:cw6mk8 文档编号:7526208 上传时间:2019-05-20 格式:DOC 页数:15 大小:53.50KB
下载 相关 举报
c语言各种排序举例.doc_第1页
第1页 / 共15页
c语言各种排序举例.doc_第2页
第2页 / 共15页
c语言各种排序举例.doc_第3页
第3页 / 共15页
c语言各种排序举例.doc_第4页
第4页 / 共15页
c语言各种排序举例.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、程序实现:1.冒泡排序的程序实现:/* * * * * * * * * * * * * * * * * * * * * * * */*PROGRAM :起泡排序 */*CONTENT :起泡排序 */* * * * * * * * * * * * * * * * * * * * * * * *#include #include #include #include #include #define MAXSIZE 20 /排序表的最大容量enum BOOLFalse,True;typedef struct /定义排序表的结构int elemwordMAXSIZE; /数据元素关键字int cou

2、nt; /表中当前元素的个数SqList;void InitialSqList(SqList /初始化排序表void BubbleSort(SqList /起泡排序void PrintSqList(SqList); /显示表中的所有元素void main()SqList L; /声明表 Lchar j=y;/-程序说明-printf(“本程序将演示起泡排序的操作。n“);/-while(j!=n /待排序列初始化BubbleSort(L); /起泡排序PrintSqList(L); /显示排序结果printf(“继续进行下一次排序吗?(Y/N)“);scanf(“ %c“,printf(“程序

3、运行结束!n 按任意键关闭窗口!n“);getchar();getchar();void InitialSqList(SqList printf(“请输入待排序的记录的个数:“);scanf(“%d“,printf(“请输入待排序的记录的关键字(整型数):n“);for(i=0;i0-i)change=False;for(j=0;jL.elemwordj+1)t=L.elemwordj;L.elemwordj=L.elemwordj+1;L.elemwordj+1=t;change=True;void PrintSqList(SqList L)/显示表中所有元素 int i;printf(“已

4、排好序的序列如下:n“);for(i=0;i#include #include #include #include #define MAXSIZE 20 /排序表的最大容量typedef struct /定义排序表的结构int elemwordMAXSIZE; /数据元素关键字int count; /表中当前元素的个数SqList;void InitialSqList(SqList /初始化排序表void SelectSort(SqList /简单选择排序int SelectMinKey(SqList,int); /寻找最小关键字的记录void PrintSqList(SqList); /显示

5、表中的所有元素void main()SqList L; /声明表 Lchar j=y; /-程序说明-printf(“本程序将演示简单选择排序的操作。n“);/-while(j!=n /待排序列初始化SelectSort(L); /简单选择排序PrintSqList(L); /显示排序结果printf(“继续进行下一次排序吗?(Y/N)“);scanf(“ %c“,printf(“程序运行结束!n 按任意键关闭窗口!n“);getchar();getchar();void InitialSqList(SqList printf(“请输入待排序的记录的个数:“);scanf(“%d“,print

6、f(“请输入待排序的记录的关键字(整型数):n“);for(i=1;i#include #include #include #include #define MAXSIZE 20 /排序表的最大容量typedef struct /定义排序表的结构int elemwordMAXSIZE; /数据元素关键字int count; /表中当前元素的个数SqList;void InitialSqList(SqList /初始化排序表void InsertSort(SqList /直接插入排序void PrintSqList(SqList); /显示表中的所有元素void main()SqList L;

7、/声明表 Lchar j=y; /-程序说明-printf(“本程序将演示直接插入排序的操作。n“);/-while(j!=nInsertSort(L);PrintSqList(L);printf(“继续进行下一次排序吗?(Y/N)“);scanf(“ %c“,printf(“程序运行结束!n 按任意键关闭窗口!n“);getchar();getchar();void InitialSqList(SqList printf(“请输入待排序的记录的个数:“);scanf(“%d“,printf(“请输入待排序的记录的关键字(整型数):n“);for(i=1;i#include #include

8、#include #include #define MAXSIZE 20 /排序表的最大容量typedef struct /定义排序表的结构int elemwordMAXSIZE; /数据元素关键字int count; /表中当前元素的个数SqList;void InitialSqList(SqList /初始化排序表void ShellSort(SqList /希尔排序 void ShellInsert(SqList /一趟希尔排序void PrintSqList(SqList); /显示表中的所有元素void main()SqList L; /声明表 Lchar j=y;int dlta3

9、=5,3,1; /希尔排序增量序列,本程序采用 5,3,1 序列int t=3; /希尔排序增量序列中增量的个数 /-程序说明-printf(“本程序将演示希尔排序的操作。n 增量序列为 5,3,1。n“);/-while(j!=n /待排序列初始化ShellSort(L,dlta,t); /希尔排序PrintSqList(L); /显示希尔排序结果printf(“继续进行下一次排序吗?(Y/N)“);scanf(“ %c“,printf(“程序运行结束!n 按任意键关闭窗口!n“);getchar();getchar();void InitialSqList(SqList printf(“请

10、输入待排序的记录的个数:“);scanf(“%d“,printf(“请输入待排序的记录的关键字(整型数):n“);for(i=1;i0 /数据元素关键字int count; /表中当前元素的个数SqList;void InitialSqList(SqList /初始化排序表void QuickSort(SqList /快速排序void QSort(SqList /子序列快速排序int Partition(SqList /一趟快速排序void PrintSqList(SqList); /显示表中的所有元素void main()SqList L; /声明表 Lchar j=y; /-程序说明-pr

11、intf(“本程序将演示快速排序的操作。n“);/-while(j!=n /待排序列初始化QuickSort(L); /快速排序PrintSqList(L); /显示排序结果printf(“继续进行下一次排序吗?(Y/N)“);scanf(“ %c“,printf(“程序运行结束!n 按任意键关闭窗口!n“);getchar();getchar();void InitialSqList(SqList printf(“请输入待排序的记录的个数:“);scanf(“%d“,printf(“请输入待排序的记录的关键字(整型数):n“);for(i=1;i=pivotkey)-high;L.elemw

12、ordlow=L.elemwordhigh;/将比枢轴记录小的记录移到低端while(low#include #include #include #include #define MAXSIZE 20 /排序表的最大容量typedef struct /定义排序表的结构int elemwordMAXSIZE; /数据元素关键字int length; /表中当前元素的个数SqList;void InitialSqList(SqList /初始化排序表void HeapSort(SqList /堆排序void HeapAdjust(SqList /堆调整void PrintSqList(SqList

13、); /显示表中的所有元素void main()SqList L; /声明表 Lchar j=y; /-程序说明-printf(“本程序将演示堆排序的操作。n“);/-while(j!=n /待排序列初始化HeapSort(L); /堆排序PrintSqList(L); /显示排序结果printf(“继续进行下一次排序吗?(Y/N)“);scanf(“ %c“,printf(“程序运行结束!n 按任意键关闭窗口!n“);getchar();getchar();void InitialSqList(SqList printf(“请输入待排序的记录的个数:“);scanf(“%d“,printf(

14、“请输入待排序的记录的关键字(整型数):n“);for(i=1;i0;-i) /把 L.elemword1L.length建成大顶堆HeapAdjust(L,i,L.length);for(i=L.length;i1;-i)t=L.elemword1; /将堆顶记录和当前未经排序子序列 L.elemword1i L.elemword1=L.elemwordi; /中的最后一个记录相互交换L.elemwordi=t;HeapAdjust(L,1,i-1); /将 L.r1i-1重新调整为大顶堆void HeapAdjust(SqList rc=H.elemwords;for(j=2*s;j=H.

15、elemwordj) break; /rc应插入在位置 s上H.elemwords=H.elemwordj;s=j;H.elemwords=rc; /插入void PrintSqList(SqList L)/显示表中所有元素int i;printf(“已排好序的序列如下:n“);for(i=1;i#include #include #include #include #define MAXSIZE 30 /排序表的最大容量typedef struct /定义排序表的结构int elemwordMAXSIZE; /数据元素关键字int length; /表中当前元素的个数SqList;void

16、InitialSqList(SqList /初始化排序表void MergeSort(SqList /归并排序void MSort(int ,int ,int,int); /归并排序递归子程序void Merge(int ,int ,int,int,int); /两个子序列归并void PrintSqList(SqList); /显示表中的所有元素void main()SqList L; /声明表 Lchar j=y; /-程序说明-printf(“本程序将演示归并排序的操作。n“);/-while(j!=n /待排序列初始化MergeSort(L); /归并排序PrintSqList(L);

17、 /显示排序结果printf(“继续进行下一次排序吗?(Y/N)“);scanf(“ %c“,printf(“程序运行结束!n 按任意键关闭窗口!n“);getchar();getchar();void InitialSqList(SqList printf(“请输入待排序的记录的个数:“);scanf(“%d“,printf(“请输入待排序的记录的关键字(整型数):n“);for(i=1;i=L.length;i+)scanf(“%d“,void MergeSort(SqList void MSort(int SR,int TR1,int s,int t)/将 SRst归并排序为 TR1st

18、。int m;int TR2MAXSIZE;if(s=t) TR1s=SRs;elsem=(s+t)/2; /将 SRst平分为 SRsm和 SRm+1tMSort(SR,TR2,s,m); /递归地将 SRsm归并为有序的 TR2smMSort(SR,TR2,m+1,t); /递归地将 SRm+1t归并为有序的 TR2m+1tMerge(TR2,TR1,s,m,t);/将 TR2sm和 TR2m+1t归并到 TR1stvoid Merge(int SR,int TR,int i,int m,int n)/将有序的 SRim和 SRm+1n归并为有序的 TRinint j,k,p;for(j=m+1,k=i;i=m+k) /将 SR中的记录有小到大地并入 TRif(SRiSRj) TRk=SRi+;else TRk=SRj+;if(i=m)for(p=k;p=n;p+) /将剩余的 SRim复制到 TRTRp=SRi; i+;if(j=n)for(p=k;p=n;p+) /将剩余的 SRjn复制到 TRTRp=SRj;j+;void PrintSqList(SqList L)/显示表中所有元素int i;printf(“已排好序的序列如下:n“);for(i=1;i=L.length;i+)printf(“%4d“,L.elemwordi);printf(“n“);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报