百度笔试题

#include <stdio.h>
void insertSort(int*A ,int size)
{   
 int i ;
 int minus = -1,plus = -1;
 
 for(i = 0;i < size;i++)
 {
  if(minus ==-1)
  {
   if(A[i] < 0 && plus >=0)//查找负数而且用plus保证先查找正数再查找负数
   {
    minus = i;
   }
   if(A[i] >0 && plus <0)//查找正数,第一次查找到的正数,分水岭,以后只查找负数
   {
    plus = i;
   }
  }

  if(minus >0 && plus >= 0)//负数迁移,所有正数后移,第一个正数在数组里的位置加1,找到负数之后放在第一个正数的前面
  {
   int tmp = 0;
   tmp = A[plus];
   A[plus++] = A[minus];
   for(int k = minus;k > plus;k--)
   {
    A[k] = A[k-1];
   }
   A[plus] = tmp;
  }
  
  minus = -1;
 }
 
 
}
int main()
{
 int A[6] ={-3,1,2,-1,-3,4};
 int size = 6;
 insertSort(A ,size);
 for(int i = 0;i<size;i++)
 {
  printf("%d ",A[i]);
 }
 printf("\n");
 return 0;
}

你可能感兴趣的:(笔试题)