Rainbow sort

Rainbow sort 

Notes: boundary condition is tricky for me 



public class RainbowSort{
  public int[] rainbowSort(int[] array){
    if(array == null || array.length <= 1){
      return array;
    }
    
    int i = 0;
    int j = 0;
    int k = array.length - 1;
    while(j <= k){ // always confused about the boundary
      if(array[j] == -1){
        swap(i++, j++, array);
      }else if(array[j] == 0){
        j++;
      }else{
        // array[j] == 1
        swap(j, k--, array);
      }
    }
    return array;
  }
  private void swap(int i, int j, int[] array){
    int tmp = array[i];
    array[i] = array[j];
    array[j] = tmp;
  }
}

 

posted on 2018-09-20 18:04  猪猪&#128055;  阅读(102)  评论(0)    收藏  举报

导航