第15周项目1(3)-验证冒泡排序算法
来源:互联网 发布:开放源代码的软件 编辑:程序博客网 时间:2024/06/06 03:27
1.冒泡排序
#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;}
程序运行结果演示:
2.改进的算法(一趟冒泡没有交换,即时结束排序过程)
#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
- 第14周项目1(3)- 验证算法 冒泡排序
- 第16周 项目1-验证算法(冒泡排序)
- 第15周项目1-验证算法(3)冒泡排序
- 第15周项目1(3)-验证冒泡排序算法
- 第16周项目1-验证算法(3)冒泡排序 直接插入排序
- 第16周项目1-验证算法(3)冒泡排序 折半插入排序
- 第16周项目1-验证算法(3)冒泡排序
- 第16周项目1-验证算法(3)冒泡排序
- 第16周SHH数据结构-【项目1-验证算法(3)冒泡排序 】
- 第16周项目1-验证算法(3)冒泡排序 显示过程
- 第16周项目1-(3)验证算法之冒泡排序
- 第16周项目1-验证算法(3)冒泡排序
- 第16周项目1-验证算法(3)冒泡排序
- 第16周项目1 验证算法(3)冒泡排序
- 第16周项目1-验证算法(3)冒泡排序
- 第16周项目1-验证算法(6)冒泡排序
- 第十六周项目1-验证算法(3)冒泡排序
- 第十六周项目1-验证算法(3)冒泡排序
- tp5 原生SQL: 写操作(execute方法)
- js原型与原型链
- 1049. 数列的片段和(20) PAT乙级真题
- 移动互联网产品数据分析
- 嵌入式裸机开发,全局变量初值不正确
- 第15周项目1(3)-验证冒泡排序算法
- TCP/IP协议:最大传输单元MTU 和 最大分节大小MSS
- docker insecure-registry
- 利用xgboost4j下的xgboost分类模型案例
- react:阻止事件冒泡
- 第十四周项目3-插入排序之希尔排序
- c99 restrict 关键字
- dedecms织梦后台提示用户名不存在
- 排序