//核心在于一遍遍的找出第1,第2...第n小的数放在1,2...n位置 publicstaticvoidselection_sort(int[] nums) { for (int i = 0; i < nums.length - 1 ; i++) { int min = nums[i]; int pos = i;
for (int j = i; j < nums.length; j++) { if (nums[j] <= min) { min = nums[j]; pos = j; } }
//核心在于将所有大于一个中心值(也就是pivot,一般取数组第一个)放到一边,小于它的放在另一边。每一次循环/递归的结果可以贡献给下一轮,所以效率高 publicstaticvoidquick_sort(int [] nums, int start, int end) { if (start > end) return;
int i = start; int j = end; int pivot = nums[start]; int pos = start;
while (i < j) { while (i < j && nums[j] > pivot) j--;
while (i < j && nums[i] <= pivot) i++;
if (i < j) { int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; } }