#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;
}