一些需要烂熟于心的代码段
面试的时候,面试官会即兴让你写一段小程序,这些程序一般都不难,实现一些字符串处理的基本功能,或者一些排序、查找之类的小算法。
但是往往当我们在纸上动笔写得时候,会发现漏洞百出。在电脑上写,我们可以通过DEBUG来修正很多问题,而在纸上一下笔,那些小BUG就只能搞面试官给你提出来,就等着尴尬了。。。
一:冒泡排序:
void bubble_sort(int a[], const int size) { bool flag = true; int temp = 0; /* Temporary value for swapping two elements */ for (int i = 0; i < size - 1; i ++) { flag = true; for (int j = 0; j < size - i - 1; j ++) { if (a[j] > a[j + 1]) { temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; flag = false; } // end if } // end for j = ... if (flag == true) break; } // end for i = ... }
通常,我们很多时候会分不清冒泡排序和选择排序的具体实现方法;
二:快速排序:
void quickSort(int number[], int left, int right)
{
if(left < right)
{
int i = left;
int j = right + 1;
while(1)
{
// 向右找
while(i + 1 < MAX && number[++i] < number[left]) ;
// 向左找
while(j -1 > -1 && number[--j] > number[left]) ;
if(i >= j)
break;
SWAP(number[i], number[j]);
}
SWAP(number[left], number[j]);
quickSort(number, left, j-1); // 對左邊進行遞迴
quickSort(number, j+1, right); // 對右邊進行遞迴
}
}
三:二分查找:
int half_seek(int arr[], int low, int high, num) { int mid; mid = Low + (high - low)/2; if((low>=high)&&(arr[mid]!=num)) return -1; else { if(arr[mid]==num) return mid; else if(arr[mid]>num) high = mid-1; else low = mid+1; return half_seek(arr,low,high,num);//递归 } }
四:字符串拷贝:
char *strcpy(char *dest, const char *src)
{
const char *p;
char *q;
for(p = src, q = dest; *p != '\0'; p++, q++)
*q = *p;
*q = '\0';
return dest;
}
五:待续...
浙公网安备 33010602011771号