int* reOrderArrayTwo(int* array, int arrayLen, int* returnSize ) {
	
	
		    // write code here
	
	
		    /*int i,j=-1,k=-1;                      //i为公共变量,j指向偶数,k指向奇数
	
	
		    for(i=0;i<=arrayLen;i++){
	
	
		        if(array[i]%2==0&&j==-1){           //找到当前情况下第一个偶数
	
	
		            j=i;
	
	
		            continue;
	
	
		        }
	
	
		        if(array[i]%2==1&&k==-1){          //找到当前情况下第一个奇数
	
	
		            k=i;
	
	
		            continue;
	
	
		        }
	
	
		        if(j<k&&k!=-1&&j!=-1){          //如果此时偶数在奇数前面,并且k和j都指向有效位置  则交换,并把ijk归位
	
	
		            int temp;
	
	
		            temp=array[j];
	
	
		            array[j]=array[k];
	
	
		            array[k]=temp;
	
	
		            i=j;
	
	
		            j=-1;
	
	
		            k=-1;
	
	
		        }
	
	
		        if(j>k&&k!=-1&&j!=-1){          //否则再找下一个奇数,此时不需要交换
	
	
		            k=-1;
	
	
		            i=i-1;                          //以上代码思路正确,超过了时间复杂度限制。。。
	
	
		        }
	
	
		    }
	
	
		    *returnSize = arrayLen;
	
	
		    return array;*/
	
	
		    int end=arrayLen-1;
	
	
		    for(int i=0;i<end;i++){
	
	
		        if(array[i]%2==0){                    //找到第一个偶数,然后从后面往前找奇数
	
	
		            while(array[end]%2==0&&end>i){           //如果end所指是偶数且end>i,end--
	
	
		                end--;
	
	
		            }
	
	
		            if(end==i) break;           //如果end==i表明后面全是偶数,结束
	
	
		            int temp;                     //否则end指向奇数,而i<end i指向偶数,则进行二者交换
	
	
		            temp=array[i];
	
	
		            array[i]=array[end];
	
	
		            array[end]=temp;
	
	
		        }
	
	
		    }
	
	
		    *returnSize = arrayLen;
	
	
		    return array;
	
	
		}
	

京公网安备 11010502036488号