第十五周项目一——验证算法之冒泡排序
来源:互联网 发布:图像边缘检测算法代码 编辑:程序博客网 时间:2024/05/19 19:33
*Copyright(c)2017,烟台大学计算机与控制工程学院 *All rights reservrd. *作者:刘文平 *完成时间:2017年12月7日 *版本号:v1.0 *问题描述:用序列{57, 40, 38, 11, 13, 34, 48, 75, 6, 19, 9, 7}作为测试数据,运行并本周视频中所讲过的算法对应 程序,观察运行结果并深刻领会算法的思路和实现方法:冒泡排序。 *问题输入:无 *问题输出:见截图 第一种算法:#include <stdio.h>#define MaxSize 20typedef int KeyType; //定义关键字类型typedef char InfoType[10];typedef struct //记录类型{ KeyType key; //关键字项 InfoType data; //其他数据项,类型为InfoType} RecType; //排序的记录类型定义void BubbleSort(RecType R[],int n){ int i,j,k; RecType tmp; for (i=0; i<n-1; i++) { for (j=n-1; j>i; j--) //比较,找出本趟最小关键字的记录 if (R[j].key<R[j-1].key) { tmp=R[j]; //R[j]与R[j-1]进行交换,将最小关键字记录前移 R[j]=R[j-1]; R[j-1]=tmp; } printf("i=%d: ",i); for (k=0; k<n; k++) printf("%d ",R[k].key); printf("\n"); }}int main(){ int i,n=10; RecType R[MaxSize]; KeyType a[]= {9,8,7,6,5,4,3,2,1,0}; for (i=0; i<n; i++) R[i].key=a[i]; printf("排序前:"); for (i=0; i<n; i++) printf("%d ",R[i].key); printf("\n"); BubbleSort(R,n); printf("排序后:"); for (i=0; i<n; i++) printf("%d ",R[i].key); printf("\n"); return 0;}第二种算法(改进后的算法):#include <stdio.h>#define MaxSize 20typedef int KeyType; //定义关键字类型typedef char InfoType[10];typedef struct //记录类型{ KeyType key; //关键字项 InfoType data; //其他数据项,类型为InfoType} RecType; //排序的记录类型定义void BubbleSort1(RecType R[],int n){ int i,j,k,exchange; RecType tmp; for (i=0; i<n-1; i++) { exchange=0; for (j=n-1; j>i; j--) //比较,找出最小关键字的记录 if (R[j].key<R[j-1].key) { tmp=R[j]; //R[j]与R[j-1]进行交换,将最小关键字记录前移 R[j]=R[j-1]; R[j-1]=tmp; exchange=1; } printf("i=%d: ",i); for (k=0; k<n; k++) printf("%d ",R[k].key); printf("\n"); if (exchange==0) //中途结束算法 return; }}int main(){ int i,n=10; RecType R[MaxSize]; KeyType a[]= {0,1,7,2,5,4,3,6,8,9}; for (i=0; i<n; i++) R[i].key=a[i]; printf("排序前:"); for (i=0; i<n; i++) printf("%d ",R[i].key); printf("\n"); BubbleSort1(R,n); printf("排序后:"); for (i=0; i<n; i++) printf("%d ",R[i].key); printf("\n"); return 0;}知识点总结:通过冒泡排序第一次就可以将一组数中最小的数排出来。学习心得:C++ 中学过冒泡排序,现在又学习一遍,比较深刻。
阅读全文
0 0
- 第十五周——项目一—验证算法(3)交换排序之冒泡排序
- 第十五周项目一——验证算法之冒泡排序
- 第十五周项目一——验证算法之冒泡排序
- 【第十五周项目1】验证算法——冒泡排序
- 第十五周——项目一—验证算法(4)交换排序之快速排序
- 第十五周——项目一—验证算法(6)选择排序之堆排序
- 第十五周项目一(2)——验证算法之快速排序
- 第十五周项目一(3)——验证算法之直接选择排序
- 第十五周项目一(2)——验证算法之快速排序
- 第十五周项目一(3)——验证算法之直接选择排序
- 第十五周 排序 项目一 验证算法(1)冒泡排序
- 第十五周项目1 验证算法(3)交换排序之冒泡排序
- 第十六周项目一 验证算法——冒泡排序
- 第十五周项目1-验证算法-冒泡排序
- 第十五周——项目一—验证算法(7)归并排序
- 第十五周项目四 验证算法——希尔排序
- 【第十五周项目1】验证算法——希尔排序
- 第十五周项目1—验证算法(希尔排序)
- 第十一周 【项目5
- 百练+EK算法模版+网络流邻接表形式
- Shell脚本中$0, $?, $! 等含义
- Angular组件间传值
- 第11周【项目4
- 第十五周项目一——验证算法之冒泡排序
- Angular 全选
- 第十三周——项目一验证算法—(4)验证平衡二叉树相关算法
- 比KEEP更好,运动健身、塑形瘦身的小程序新选择
- AJAX校验
- Error saving your changes: Description control characters are not allowed
- 去重
- ADT下载地址(含各版本)
- VC++多线程开发