1 /*
2 * 1: time complexity o(n^2)
3 * 2: good performance for items around 10-20: better than merge sort and quick sort
4 * 3: no extra space needed
5 * */
6 public class SelectSort {
7 public static void main(String[] args) {
8 int[] nums = {3, -3, 5, 1, 1, 2, -10};
9 //this is the make sure no index out bound
10 for (int i = 0; i < nums.length-1; i++) {
11 /* left = 0, right =lenth - 1 = 6
12 * round 1: i = 0, nums[i] = -3, from [-3, 5, 1, 1, 2, -10], the lowest index = 6
13 * swap 3 and -10, output result = [-10, -3, 5, 1, 1, 2,3]
14 * */
15 int index = i ;
16 for (int j = i+1; j < nums.length; j++) {
17 if (nums[j]<nums[index]){
18 index = j ;
19 }
20 }
21 //when it comes to here, the index already point to the lowest num from the right(unsorted)
22 //note, dont if the i is the lowest, dont need to swap with itself
23 if (i != index){
24 int temp = nums[i] ;
25 nums[i] = nums[index] ;
26 nums[index] = temp ;
27 }
28 }
29 showNumber(nums);
30 }
31
32 public static void showNumber(int[] nums) {
33 for (int i = 0; i < nums.length; i++) {
34 System.out.println("nums[i]" + nums[i]);
35 }
36 }
37 }
![]()