日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++中函数的重载和函数指针排序大全

發布時間:2025/3/15 c/c++ 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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++中函数的重载和函数指针排序大全的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。