C++中函数的重载和函数指针排序大全
来源:互联网 发布:济南软件的公司 编辑:程序博客网 时间:2024/06/11 11:17
函数重载的判断标准,
- 参数个数不相同
- 参数的类型不相同
- 参数的顺序不相同
注意函数的返回值不是函数重载的判断标准
函数变量得到声明
#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; } }}
阅读全文
0 0
- C++中函数的重载和函数指针排序大全
- c语言中通过函数指针实现函数重载
- c语言中通过函数指针实现函数重载
- c语言中通过函数指针实现函数重载
- 定义函数的指针,C++和C不同是因为函数重载
- 函数重载和函数指针在一起
- 函数重载和函数指针在一起
- c语言中指针函数和函数指针
- 【C++】函数的重载
- 【c++】函数的重载
- 在c 中qsort()排序函数的使用qsort函数应用大全
- C语言中返回指针的函数和指向函数的指针
- C语言中关于返回指针的函数和指向函数的指针
- 指针, 指针的指针, 数组, 指针数组, 数组指针, 指针函数, 函数指针 C/C++中函数指针的含义
- 【c/c++】指针函数和函数指针
- c语言中函数指针的用法和技巧
- C语言中函数和指针的参数传递
- C和C++中函数指针的用法
- Spring Cloud微服务实战--分享
- 缓冲技术之三:Linux下I/O操作buffer缓冲块使用流程
- Java任务--数组迭代器
- 手写一个同时支持的函数式和面向对象两种调用方法js库
- post Upload上传文件中multipart/form-data 做的那些事
- C++中函数的重载和函数指针排序大全
- weblogic部署程序爆错!java.lang.NullPointerException
- 正则表达式其实很简单
- 计算机视觉、机器学习相关领域论文和源代码大集合
- 【C++】对称矩阵
- 十六个有用的Linux命令行技巧
- FZU
- 模拟实现C库函数:strchr、strcmp、strstr、memcpy和memmove
- go语言中数组与切片的区别