經典C C 演算法

2022-09-06 09:24:11 字數 2673 閱讀 7531

二分查詢的**.

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 二 選擇排序 選擇排序法的基本思...