废话不多说,直接上代码: 注意点: 1 while(arr[i] < key && i < j) 和 while(arr[j] > key && i < j)这两个判断需要特别注意:很多博客会写成 <=, 是有问题的。 2 if(i < j){ int tmp = arr[j]; arr[j] = arr[i]; arr[i] = tmp; } 元素交换的时候需要判断界限 public int[] quickSort(int[] arr, int left, int right){ if(left > right){ return arr; } int i = left; int j = right; int key = arr[left]; while( i < j){ // 从左往右找到一个大于key的元素 while(arr[i] < key && i < j){ i ++; } // 从左往右找到一个小于key的元素 while(arr[j] > key && i < j){ j --; } if(i < j){ int tmp = arr[j]; arr[j] = arr[i]; arr[i] = tmp; } } arr[left] =arr[i]; arr[i] = key; sort(arr, left, i -1); sort(arr, i + 1, right); return arr; }
快速排序,java实现
于 2023-02-13 19:01:35 首次发布