過載實現:int char二分查詢. 函式模板 :對整型 浮點型 字元型 實現氣泡排序
程式:演算法+資料
C++語言的資料:
1、基本型別: 整型,浮點型,字元型,bool型別
2、變數:此塊空間的內容可改變
型別 變數名;//分配空間:以型別
初始化變數:在定義變數同時賦初值
引用:通過名字引用變數的內容
整型變數:
型別 變數名;
常量:(空間不能改)不可以改變的量
整型常量 :
十進位制199 (權10 每一位[0 9])
八進位制: 0100 (權8 ,每一位[0,7])
十六進位制:0x12 (權16 每一位[0,...,9,a,b,c,d,e,f)
3、運算子:
1、插入流 <<
2、輸入流 >>
4、作用域:能被引用的區間
區域性變數:在函式內定義的變數
作用域:在函式內
全域性變數:在函式外定義的變數
注:區域性變數優先
5、引用作用域的內容:
空間名::變數名;
6、指標:就是空間在記憶體所在空間的地址編號
指標變數:存放指標的變數
7、取別名:給變數名取別名
規則: 型別名& 別名=變數;
int a=100;
8、過載:C++允許同名的函式,呼叫函式時由函式與形參共同來決定呼叫。
C語言規定:同一作用域下不允許出現同名現象(函式名、變數)
呼叫函式:函式名和形參
注:1、typedef只能對型別取別名 typedef int Intgerr
2、取別名一定要指向
9、函式模板
在同族函式內,過程一致,只是資料不一致。將函式定義定義為一個通用的模型。
template<typename T> 或 template<class T>
T add(T a,T b)
{
}
#include<iostream> using namespace std; //判斷一個字元是否存在一個字串中 //折半(二分)查詢:整型陣列 short finder(int buf[],int ilen,int key) { int mid=0; int left=0,right=ilen-1; while(left<=right) { mid=(left+right)/2; if(buf[mid]>key) right=mid-1; else if(buf[mid]<key) left=mid+1; else return mid; } } short finder(char buf[],int ilen,int key) { int mid=0; int left=0,right=ilen-1; while(left<=right) { mid=(left+right)/2; if(buf[mid]>key) right=mid-1; else if(buf[mid]<key) left=mid+1; else return mid; } } //對整型 浮點型 字元型 實現氣泡排序 template<typename T> T finder(T ilen,T temp) { int i,j; int buf[100]={1,2,5,4,3,8,7}; for(i=0;i<ilen;i++) { j=i; for(j=i+1;j<ilen;j++) { if(buf[i]<buf[j]) { temp=buf[j]; buf[j]=buf[i]; buf[i]=temp; } } } for(i=0;i<ilen;i++) { cout<<buf[i]<<" "; } cout<<endl; } short finder(float buf[],int ilen) { int i,j; double temp; for(i=0;i<ilen;i++) { j=i; for(j=i+1;j<ilen;j++) { if(buf[i]<buf[j]) { temp=buf[j]; buf[j]=buf[i]; buf[i]=temp; } } } for(i=0;i<ilen;i++) { cout<<buf[i]<<" "; } cout<<endl; } short finder(char buf[],int ilen) { int i,j; char temp; for(i=0;i<ilen;i++) { j=i; for(j=i+1;j<ilen;j++) { if(buf[i]<buf[j]) { temp=buf[j]; buf[j]=buf[i]; buf[i]=temp; } } } for(i=0;i<ilen;i++) { cout<<buf[i]<<" "; } cout<<endl; } int main() { char buf[100]="abcdefg"; float buf2[100]={1.2,2.5,6.7,4.6,8.4,3.5}; char buf3[100]="adghctsg"; // cout<<finder(buf1,7,8)<<endl; // cout<<finder(buf,7,'c')<<endl; finder(7,0); // finder(buf2,6); // finder(buf3,8); return 0; }
work: 過載 選擇排序
#include<iostream> #include<string.h> using namespace std; //過載:在同一作用域下允許同名函式 template<typename T> void swap(T* a,T* b) { T temp; temp=*a; *a=*b; *b=temp; } template<typename T> void selectsort(T buf[],int ilen) { //選擇排序:每一次從未排序中選擇最值(監哨值),並依次存放 int listen; int i=0,j; for(i=0;i<ilen-1;i++) { listen=i; for(j=i+1;j<ilen;j++) { if(buf[j]>buf[listen]) listen=j; } if(i!=listen)//listen=9 { swap(buf+i,buf+listen); } } } int main() { char buf[100]="qzadfdgtggetrvjtr"; selectsort(buf,strlen(buf)); cout<<buf<<endl; return 0; }