C++中函数的重载和函数指针排序大全
函数重载的判断标准,
- 参数个数不相同
- 参数的类型不相同
- 参数的顺序不相同
注意函数的返回值不是函数重载的判断标准
函数变量得到声明
#include <iostream>using namespace std;void myFunc(int a,int b)
{cout <<"a" << a << "b" << b << endl;
}//函数指针
//声明一个函数类型
typedef void (myTypefunc)(int a,int b); //int
//int main()
{myTypefunc *myfunc =NULL;cout << "hello world!"<<endl;system("pause");return 0;
}
#include <iostream>using namespace std;void myFunc(int a,int b)
{cout <<"a" << a << "b" << b << endl;
}void myFunc(int a)
{cout <<"a" << a << endl;
}//函数指针
//声明一个函数类型
//typedef void (myTypefunc)(int a,int b); //int
// 声明一个函数指针类型
//typedef void (* myTypefunc)(int a,int b);
//定义一个函数指针变量
void (* myTypefunc)(int a,int b);int main()
{cout << "hello world!"<<endl;system("pause");return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>void traverse_array(int,int *);void output_array(int,int *);void select_sort_array(int,int *);void bubble_sort_array(int,int*);void quick_sort_array(int,int[]);int main(){int array[]={0,8,2,8,7,5};int arr_len=sizeof array /sizeof(int);//traverse_array(arr_len,array);//select_sort_array(arr_len,array);//bubble_sort_array(arr_len,array);quick_sort_array(arr_len,array);output_array(arr_len,array);return0;}//数组反转void traverse_array(int argc,int *a){int half=argc/2,tmp=0,i;for(i=0;i<half;i++){tmp=*(a+i);*(a+i)=*(a+argc-i-1);*(a+argc-i-1)=tmp;}}//选择排序void select_sort_array(int argc,int *a){registerint i,j,min,tmp;for(i=0;i<argc;i++){min=i;for(j=i;j<argc;j++){if(a[min]>a[j]){min=j;}}if(min!=i){tmp=a[i];a[i]=a[min];a[min]=tmp;}}}//冒泡排序
//它的时间复杂度为O(n^2),虽然不及堆排序、快速排序的O(nlogn,底数为2),但是有两个优点:1.“编程复杂度”很低,很容易写出代码;2.具有稳定性,这里的稳定性是指原序列中相同元素的相对顺序仍然保持到排序后的序列,而堆排序、快速排序均不具有稳定性。void bubble_sort_array(int argc,int *a){registerint i,j,tmp;for(j=0;j<argc-1;j++){for(i=0;i<argc-j-1;i++){if(a[i]>a[i+1]){tmp=a[i];a[i]=a[i+1];a[i+1]=tmp;}}}}//快速排序
//快速排序(Quicksort)是对冒泡排序的一种改进。通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。//挖坑法void quick_sort_array(int argc,int a[]){int i,j,m=argc-1,tmp,base_num=a[argc-1];do{for(i=0;i<m;i++){if(a[i]>=base_num){tmp=a[m];a[m]=a[i];a[i]=tmp;m=i;break;}}for(j=argc-1;j>m;j--){if(a[j]<base_num){tmp=a[m];a[m]=a[j];a[j]=tmp; m=j; break; } } }while(i!=j); if(m>1) { quick_sort_array(m,a); } if(argc-m-1>1) { quick_sort_array(argc-m-1,a+m+1); } return; } //输出数组 void output_array(int argc,int *a) { int i; for(i=0;i<argc;i++) { printf("%d ,",a[i]); } printf("\n"); }/**插入排序法**///插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。void Insert_sort(int s[],int len){int i,j;int temp;for(i=1;i<len;i++){temp=s[i];for (j=i; j>0&&temp<s[j-1]; j--) {s[j]=s[j-1];}s[j]=temp; } }/**折半插入排序法**/
//当第i个元素要进行排序的时候,它前面的1到i-1位置上的数据是局部有序的,对于有序的数据序列,采用折半查找法去判断在何处插入i位置上的数据,就大大减少了需要比较的次数。
void HalfInsert_sort(int s[],int len){int temp, low, high, i, j, mid;for (i=1; i<len; ++i){temp = s[i];low =0;high = i -1;while (high >= low){mid = (low + high) /2;if (temp < s[mid]){high = mid -1;}else{low = mid +1;}}for (j=i-1; j>=low; --j){s[j+1] = s[j];}s[low] = temp;}
}/**希尔排序法**/
//希尔排序法(缩小增量法)属于插入类排序,是将整个无序列分割成若干小的子序列分别进行插入排序的方法。
void Hill_sort(int s[],int len){int h,j,k,t;for (h=len/2; h>0; h=h/2) {//控制增量for (j=h;j<len; j++) {t=s[j];for (k=j-h; k>=0&&t<s[k]; k-=h) {s[k+h]=s[k];}s[k+h]=t;}}
}
C++中函数的重载和函数指针排序大全相关推荐
- 函数 的 重载 和 函数 模版
1 //函数的重载对一个函数名 赋予它 多重意义 就成为函数的重载 2 //在函数重载的基础上 我们仍然对那种 实现功能相似 3 // 但是 函数类型和形参不确定的 情况下 产生了 函数 模版 4 # ...
- oracle 函数 实现重载_C++函数重载的深入解析
<深入理解C++11:C++ 11新特性解析与应用>--2.10 final/override控制 2.10 final/override控制 类别:部分人 在了解C++11中的final ...
- php是否直接支持函数的重载,php函数重载的替代方法--伪重载详解
对于弱类型语言来说,PHP函数重载,并不像一般的OOP那样.而弱类型本来就不区分,所以无法通过这些来实现.但是,可以通过下面的方法来实现简单的伪重载吧. 函数重载的替代方法-伪重载,下面看一个具体的实 ...
- C++深度解析 类中的函数重载 -- 全局函数,普通成员函数,静态成员函数(28)
C++深度解析 类中的函数重载 -- 全局函数,普通成员函数,静态成员函数(28) 函数重载的回顾 函数重载的本质为相互独立的不同函数 C++中通过函数名和函数参数确定函数调用 无法直接通过函数名得到 ...
- 【C 语言】二级指针作为输入 ( 自定义二级指针内存 | 二级指针排序 | 抽象业务逻辑函数 )
文章目录 一.二级指针排序 ( 抽象业务逻辑函数 ) 1.生成 二级指针 函数 2.打印 二维指针 函数 3.二维指针排序 函数 4.释放 二维指针 函数 二.完整代码示例 一.二级指针排序 ( 抽象 ...
- C++文件头,命名空间,new和delete,内联函数,引用,函数重载,构造函数和析构函数,深拷贝和浅拷贝,explict,this指针
目 录 1 开始学习C++............................................................................... ...
- C++学习笔记-----继承体系中函数的重载,覆盖和隐藏的区别
1.重载,在同一个作用域中定义的同名不同参的一些函数为重载. 2.隐藏,若在基类中定义了某一non_virtual函数,在派生类重存在同名函数(不需要参数列表相同),基类的该函数在派生类中是不可见的, ...
- C++中重载与重写函数区别及虚函数(转载)
C++中重载与重写函数区别及虚函数 C++中的虚函数(virtual function) 1.简介 虚函数是C++中用于实现多态(polymorphism)的机制.核心理念就是通过基类访问派生类定义的 ...
- C++中的常成员函数以及const用于函数重载
1.什么是常成员函数? 在类中可以含有普通成员函数和静态成员函数,而使用 const修饰的普通成员函数称为 常成员函数 const修饰的是普通成员函数中的this指针指向的内存空间 类的普通成员函数中 ...
最新文章
- Leetcode PHP题解--D14 561. Array Partition I
- 光伏产业链遭致命伤:补贴下调或结束暴利
- sql server配置管理器在哪里看ip_微服务管理平台nacos虚拟ip负载均衡集群模式搭建...
- oracle数据库部署
- easypoi导出word表格_拒绝加班,批量将word文档中的信息高效率提取出来存储到Excel中...
- DNS域名解析服务(正向解析、反向解析、主从服务器)
- Java学习小程序(4)数列求和
- SQL Server数据库优化方案
- Android TextView通过SpannableString设置字体、大小、颜色、样式、超级链接
- [照片]51cto众生相
- 集合与数组,集合与集合之间的转换
- java方法调用制作万年历,基于JAVA的万年历api调用代码实例
- Javascript程序运行环境安装
- 微弱信号检测_世界上最轻薄的信号放大器:可精准监测生物信号!
- airtest web 录制滑块_AirTest学习四,录制Web测试脚本
- 天池大数据竞赛口碑商家客流量预测——时序预测(python-numpy-arima)
- Linux修改文件编码格式
- 《白说》---- 读书笔记
- PHP实现匿名聊天室
- 《弃子长安》第六章 九煞夺命