二分查詢的**.
int bfind(int* a,int len,int val)
else if(a[m] < val)
else
return m;
}return -1; //沒有找到
}寫出在母串中查詢子串出現次數的**.
int count1(char* str,char* s)
if(*s2 == '\0')
count++;
str++;
}return count;
}查詢第乙個匹配子串位置,如果返回的是s1長度len1表示沒有找到
size_t find(char* s1,char* s2)
if(j==len)
break;
}return i }
寫出快速排序或者某種排序演算法**
快速排序:
int partition(int* a,int l,int r)
swap(a[i],a[r]);
return i;
}void qsort(int* a,int l,int r)
氣泡排序:
void buble(int *a,int n)}}
}插入排序:
void insertsort(int* a,int n)
a[i+1] = key;}}
出現次數相當頻繁
實現strcmp函式
int strcmp11(char* l,char* r)
實現字串翻轉
void reserve(char* str)
}將乙個單鏈表逆序
struct list_node
int data;
list_node* next;
};void reserve(list_node* phead)
}測試程式:
list lt;
lt.phead = new list_node(0,0);
lt.phead->next = new list_node(1,0);
lt.phead->next->next = new list_node(2,0);
lt.phead->next->next->next = new list_node(3,0);
lt.reserve();
list_node * p = lt.phead;
while(p)
迴圈鍊錶的節點對換和刪除。
//雙向迴圈
list_node* earse(list_node* node)
//單項迴圈
list_node* earse(list_node* node)
將乙個數字字串轉換為數字."1234" -->1234
int atoii(char* s)
return num;
}出現次數相當頻繁
.實現任意長度的整數相加或者相乘功能。
void bigadd(char* num,char* str,int len)}}
.寫函式完成記憶體的拷貝
void* memcpy( void *dst, const void *src, unsigned int len )
while ( len-- )
} else if ( dst < src )
while ( len-- )
}return dst;
}出現次數相當頻繁
編寫類string的建構函式、析構函式和賦值函式,已知類string的原型為:
class string
;解答:
//普通建構函式
string::string(const char *str)
else
}// string的析構函式
string::~string(void)
//拷貝建構函式
string::string(const string &other) // 得分點:輸入引數為const型
//賦值函式
string & string::operate =(const string &other) // 得分點:輸入引數為const型
剖析:能夠準確無誤地編寫出string類的建構函式、拷貝建構函式、賦值函式和析構函式的面試者至少已經具備了c++基本功的60%以上!
在這個類中包括了指標類成員變數m_data,當類中包括指標類成員變數時,一定要過載其拷貝建構函式、賦值函式和析構函式,這既是對c++程式設計師的基本要求,也是《effective c++》中特別強調的條款。
實現strcpy
char * strcpy( char *strdest, const char *strsrc )
編寫乙個函式,作用是把乙個char組成的字串迴圈右移n個。比如原來是「abcdefghi」如果n=2,移位後應該是「hiabcdefgh」
函式頭是這樣的:
//pstr是指向以'\0'結尾的字串的指標
//steps是要求移動的n
void loopmove ( char * pstr, int steps )
解答:正確解答1:
void loopmove ( char *pstr, int steps )
正確解答2:
void loopmove ( char *pstr, int steps )
經典c c 演算法
二分查詢的 int bfind int a,int len,int val else if a m val else return m return 1 沒有找到 寫出在母串中查詢子串出現次數的 int count1 char str,char s if s2 0 count str return ...
C C 中的經典排序演算法總結
在c c 中,有一些經典的排序演算法,例如 氣泡排序 雞尾酒排序或雙向氣泡排序 改進的氣泡排序 選擇排序 直接插入排序 歸併排序 快速排序 希爾排序和堆排序等等。下面對這些排序演算法進行一一解析並給出示例 以共享之。氣泡排序是最基本的排序演算法,之所以稱之為氣泡排序是因為在氣泡排序的過程中總是大數往...
C C 學習 陣列的應用 經典演算法)
一 氣泡排序 氣泡排序的基本思想是通過相鄰兩個記錄之間的比較和交換,使關鍵碼較小的記錄逐漸從底部移向頂部 上公升 關鍵碼較大的記錄從頂部移向底部 沉底 冒泡由此得名。交換 第k趟,注意6趟 for int l 0 l 7 l 輸出 cout endl return0 二 選擇排序 選擇排序法的基本思...