selection sort

selection sort 

 The algorithm proceeds by finding the smallest (or largest, depending on sorting order) element in the unsorted sublist, exchanging (swapping) it with the leftmost unsorted element (putting it in sorted order), and moving the sublist boundaries one element to the right.



Sorted sublist == ( )
Unsorted sublist == (11, 25, 12, 22, 64)
Least element in unsorted list == 11

Sorted sublist ==  (11)
Unsorted sublist == (25, 12, 22, 64)
Least element in unsorted list == 12

Sorted sublist == (11, 12)
Unsorted sublist == (25, 22, 64)
Least element in unsorted list == 22

Sorted sublist == (11, 12, 22)
Unsorted sublist == (25, 64)
Least element in unsorted list == 25

Sorted sublist == (11, 12, 22, 25)
Unsorted sublist == (64)
Least element in unsorted list == 64

Sorted sublist == (11, 12, 22, 25, 64)
Unsorted sublist == ( )



public class SelectionSort{
  public int[] selectionSort(int[] array){
    // sanity check
    if(array == null || array.length <= 1){
      return array;
    }
    
    for(int i = 0; i < array.length; i++){
      int min = i;
      for(int j = i + 1; j < array.length; j++){
        if(array[j] < array[i]){
          min = j;
        }
      }
      swap(array, i, min);
    }
    return array;
  }
  
  private void swap(int[] array, int left, int right){
    int tmp = array[left];
    array[left] = array[right];
    array[right] = tmp;
  }
}

public static void main(String[] args){
  SelectionSort solution = new SelectionSort();
  
  // test cases to cover all the possible situations
  int[] array = null;
  array = solution.selectionSort(array);
  System.out.println(Arrays.toString(array));
  
  array = new int[0];
  array = solution.selectionSort(array);
  System.out.println(Arrays.toString(array));
  
  
  array = new int[]{4, 3, 2, 1};
  array = solution.selectionSort(array);
  System.out.println(Arrays.toString(array));
}

 

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

导航