现在的位置: 首页 > 综合 > 正文

上海华为的笔试题

2013年09月11日 ⁄ 综合 ⁄ 共 583字 ⁄ 字号 评论关闭

int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数intFunc(int* A, int nSize),使A把0移至后面,非0整数移至

数组前面并保持有序,返回值为原数据中第一个元素为0的下标。(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路)

#include"iostream"
#include"stdio.h"
using namespacestd;
int Func(int* a,int nSize)
{
       for (int i=0;i<nSize;i++)
       {
              if(a[i]==0)
              {
                     for (intj=i;j<nSize;j++)
                     {
                            if (a[j]!=0)
                            {
                                   inttemp=a[i];
                                   a[i]=a[j];
                                   a[j]=temp;
                                   break;
                            }
                     }
              }
       }
       for (int j=0;j<nSize;j++)
       {
              if (a[j]==0)
              {
                     break;
              }
       }
 
       for (i=0;i<j-1;i++)
       {
              for (int k=j-1;k>i;k--)
              {
                     if (a[k]<a[k-1])
                     {
                            int tmp=a[k];
                            a[k]=a[k-1];
                            a[k-1]=tmp;
                     }
              }
       }
       return j;
}
intmain(void) 
{ 
       int a[11]={1,2,0,3,0,0,5,7,11,13,16};
       Func(a,11);
    for (int k=0;k<11;k++)
    {
              cout<<a[k]<<",";
    }
    return 0; 
}  

抱歉!评论已关闭.