函数指针的应用比较排序与冒泡排序指针完成
2016-04-29 19:48
519 查看
// 利用函数指针来实现比较排序 冒泡排序
// test.cpp : Defines the entry point for the console application. // <pre name="code" class="cpp">// test.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <IOSTREAM> using namespace std; void max_min(int* p, int m, int* max, int* min); void BubbleSort(int* p, int m);/*冒泡排序*/ void SelectSort(int* p, int m);/*选择排序*/ int main(int argc, char* argv[]) { int a[10] = {23,12,-56,48,16,-12,20,0,-9,66}; int n = 10; void (*fp)(int*, int, int*, int*); int max,min,*pmax = &max, *pmin = &min; fp = max_min; (*fp)(a,n,pmax,pmin); cout<<endl; cout<<max<<" "<<min<<endl; int ch = 2; void (*fs)(int*, int);/*函数指针*/ switch(ch) { case 1:{ fs= BubbleSort; fs(a, n); }break; case 2:{ fs = SelectSort; fs(a, n); }break; default:break; } for(int i = 0; i < n; ++i) { cout<<a[i]<<" "; } printf("Hello World!\n"); return 0; } void max_min(int* p, int m, int* pmax, int* pmin) { *pmax = *pmin = *p; for(int i = 0; i < m; ++i) { if (*pmax < *(p+i)) { *pmax = *(p+i); } if (*pmin > *(p+i)) { *pmin = *(p+i); } } } /*冒泡排序 最坏情况下O(N*N)*/ void BubbleSort(int* p, int m) { int i,j; int flag; for (i = 0; i < m; ++i){ flag = 1; for(j = i+1; j < m; ++j){ if (*(p+i) > *(p+j)){ flag = 0; int temp = *(p+i); *(p+i) = *(p+j); *(p+j) = temp; } } if (flag){ break; } } } /*选择排序 O(N*N)*/ void SelectSort(int* p, int m) { int i,j; int k; for (i = 0; i < m; ++i){ k = i; for(j = i+1; j < m; ++j){ if (*(p+k) > *(p+j)){ k = j; } } int temp = *(p+i) ; *(p+i) = *(p+k); *(p+k) = temp; } }
相关文章推荐
- Zabbix监控Windows主机
- spring和mybatis整合的dao两种开放方式
- SQL查询作业执行情况
- C语言数据结构学习网站
- Android提升篇系列:adb无法识别MX5等特殊机型
- poj 2185 Milking Grid
- jsonp
- tomcat部署solr
- LUA基本函数库
- linux内核分析课程总结
- 配置文件的读写
- hrbust 1756/哈理工oj Merge Intervals【水题】
- php 登陆动作详解
- C#小伎俩获取本地或远程磁盘使用信息
- php 登陆动作详解
- php 登陆动作详解
- JAVA模拟post请求
- 设置应用内的系统控件语言
- 编程中无穷大的设定 很多人可能设为0x7fffffff,这个数的确是32-bit int的最大值,符号位为0,其他的都是1 但在很多情况下,0x7fffffff会出现错误,比如溢出,这样两个无穷大数相
- leetcode 047 Permutations II