C++中函数的重载和函数指针排序大全
2017-11-26 22:59
411 查看
函数重载的判断标准,
参数个数不相同
参数的类型不相同
参数的顺序不相同
注意函数的返回值不是函数重载的判断标准
函数变量得到声明
参数个数不相同
参数的类型不相同
参数的顺序不相同
注意函数的返回值不是函数重载的判断标准
函数变量得到声明
#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++基础学习】引用和指针、重载、函数、内存管理
- 【转】在c++中qsort()排序函数的使用qsort函数应用大全
- C++回顾之成员函数重载、类与结构体、this指针
- 用C语言来实现的类似C++函数的重载特性-----void*指针闲谈
- c++ 指针、引用、内存管理、函数(引用、重载、内敛)——c++复习(一)
- C++学习笔记之 函数重载和函数指针在一起
- [置顶] c++ 函数模板重载(数组和指针 一级指针和二级指针)
- C++文件头,命名空间,new和delete,内联函数,引用,函数重载,构造函数和析构函数,深拷贝和浅拷贝,explict,this指针
- C++学习笔记(八):函数重载、函数指针和函数对象
- C++ 函数重载、指针及引用
- [c++]函数重载
- C++之函数重载
- C++ STL之排序函数详解
- C++指针【数组、字符串作为函数的参数】
- C++成员函数返回智能指针
- ◆ C++中通过溢出覆盖虚函数指针列表执行代码
- C++的函数重载
- C++STL 排序函数sort和qsort的用法与区别
- C++中的函数指针
- C++ 数组指针 指针数组 以及 函数指针 指针函数