標籤:

一道面試題:一個數組,有正有負,把正的移到右邊,負的移到左邊

倆種想法,個人愚見。直接看代碼就好了:

package day8;/** * 一個數組,有正有負,把正的移到右邊,負的移到左邊 * @author pangjianfei */public class PartTest { /** * 方法1:負數在左,正數在右 * @param a */ public void setParted(int [] a) { int temp = 0; int posi = -1; for(int i=0;i<a.length;i++) { if(a[i] < 0) { temp = a[i]; a[i] = a[posi+1]; a[posi+1] = temp; posi++; } } for(int i=0;i<a.length;i++) { System.out.println(a[i]); } } /** * 方法2 * @param a * @param left * @param right */ public void setParted2(int [] a,int left,int right) { if(left>=right||left==a.length||right==0){ for(int i=0;i<a.length;i++){ System.out.println(a[i]); } return ; } while(a[left]<0){ left++; } while(a[right]>=0){ right--; } if(left>=right||left==a.length||right==0){ for(int i=0;i<a.length;i++){ System.out.println(a[i]); } return; } swap(a,left,right); left++; right--; setParted2(a,left,right); } private void swap(int a[],int left,int right){ int temp=0; temp=a[left]; a[left]=a[right]; a[right]=temp; } public static void main(String[] args) { int a[] = {2,-3,1,7,-5,4,-2}; new PartTest().setParted2(a,0,a.length-1); }}

推薦閱讀:

HR就討厭我們這樣的技術,今年一個offer都沒發
為什麼我的面試總是失敗?
寫好工作郵件有哪些技巧?
18春招演算法面經:頭條,滴滴,知乎,360,華為,快手,摩拜
面試中會出現的項目問題

TAG:面試 |