一些需要烂熟于心的代码段

面试的时候,面试官会即兴让你写一段小程序,这些程序一般都不难,实现一些字符串处理的基本功能,或者一些排序、查找之类的小算法。

但是往往当我们在纸上动笔写得时候,会发现漏洞百出。在电脑上写,我们可以通过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;
}
 

五:待续...

posted on 2012-02-29 23:17  prophetpan  阅读(151)  评论(0)    收藏  举报