第十五周项目一——验证算法之冒泡排序
来源:互联网 发布:原生js 触发事件 编辑:程序博客网 时间:2024/06/06 06:38
*Copyright(c)2017,烟台大学计算机与控制工程学院 *All rights reservrd. *作者:王长青 *完成时间:2017年12月9日 *版本号:v1.0 *问题描述:用序列{57, 40, 38, 11, 13, 34, 48, 75, 6, 19, 9, 7}作为测试数据,运行并本周视频中所讲过的算法对应 程序,观察运行结果并深刻领会算法的思路和实现方法:冒泡排序。 *问题输入:无 *问题输出:见截图
第一种算法:
#include <stdio.h> #include <iostream>#define MaxSize 20 typedef 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");system("pause");return 0;}
第二种改进后的算法:
#include <stdio.h> #include <iostream>#define MaxSize 20 typedef 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");system("pause");return 0;}
程序运行截图:
阅读全文
0 0
- 第十五周——项目一—验证算法(3)交换排序之冒泡排序
- 第十五周项目一——验证算法之冒泡排序
- 第十五周项目一——验证算法之冒泡排序
- 【第十五周项目1】验证算法——冒泡排序
- 第十五周——项目一—验证算法(4)交换排序之快速排序
- 第十五周——项目一—验证算法(6)选择排序之堆排序
- 第十五周项目一(2)——验证算法之快速排序
- 第十五周项目一(3)——验证算法之直接选择排序
- 第十五周项目一(2)——验证算法之快速排序
- 第十五周项目一(3)——验证算法之直接选择排序
- 第十五周 排序 项目一 验证算法(1)冒泡排序
- 第十五周项目1 验证算法(3)交换排序之冒泡排序
- 第十六周项目一 验证算法——冒泡排序
- 第十五周项目1-验证算法-冒泡排序
- 第十五周——项目一—验证算法(7)归并排序
- 第十五周项目四 验证算法——希尔排序
- 【第十五周项目1】验证算法——希尔排序
- 第十五周项目1—验证算法(希尔排序)
- bzoj3144 [Hnoi2013]切糕(最小割)
- python_web开发笔记
- 小白使用Linux--linux下使用github遇到的小问题
- Oracle exp/imp 导入导出命令
- shell 总结
- 第十五周项目一——验证算法之冒泡排序
- Android Input Framework(二)---EventHub
- 爬虫基础-网站篇
- 【16-20】LeetCode:Python解题
- 决策树算法 python实现
- 「Deep Learning」Instance Normalization
- Android Input Framework(三)---InputReader&InputDispatcher
- 修饰符权限
- mybatis官网参考文档-XML配置_映射器(mappers)(版本: 3.4.6-SNAPSHOT)