第十五周项目1
来源:互联网 发布:去除数据中野值 编辑:程序博客网 时间:2024/06/04 01:01
/*
*Copyright (c)2017,烟台大学计算机与控制工程学院
*All rights reservrd.
*文件名称 :test.cpp
*作者:杜昕晔
*完成时间:2017年12月14日
*版本号:v1.0
*问题描述: 交换排序之冒泡排序
问题及代码:
冒泡排序
#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;}运行结果:
阅读全文
0 0
- 第十五周 【项目1
- 第十五周项目1
- 第十五周项目1
- 第十五周项目1
- 第十五周项目1
- 第十五周项目1
- 第十五周项目1
- 第十五周项目2-1
- 第十五周阅读项目1
- 第十五周 项目1 基数排序
- 第十五周项目1 哈希表
- 第十五周项目一-工资项目1
- 第十五周项目1 折腾二维数组
- 第十五周上机任务-项目1
- 第十五周 项目1--折腾二维数组
- 第十五周项目1-折腾二维数组
- 第十五周项目1--工资排序
- 第十五周上机项目3--(1)
- 数据结构总结
- TCP如何保证可靠传输
- JAVA中的StringBuffer与包装类
- 单例模式的6种实现方式
- Java中的正则表达式
- 第十五周项目1
- PHP中文件上传的功能模块实现
- 如何配置Sublime Text的LaTeXTools(Sublime Text + MikText + LaTeXTools + Sumatra PDF)
- 39. Combination Sum
- 【开发日记】马桶识别之数据收集,通过Python抓取天猫评论图片
- Python 从入门到实践 7-8 课后习题
- Laravel5.5源码详解 -- Session的启动分析
- AVL树(平衡树)
- 常见的进制转换