冒泡排序
快速排序
堆排序
桶排序

1. 快速排序

  1. 1.选择数组第一个数array[low]为基准元素,其值为基准值pivot,基准指针为p_pos
  2. 2.把比基准值小的都放左边 if(array[i]<pivot)
  3. 遍历,通过一个基准指针来移动,比基准值小则指针+1并交换位置 forip_pos++、array[p_pos] <-> array[i]
  4. 遍历结束,把基准元素和指针所指的元素交换 array[low] <-> array[p_pos]
  5. 3.分治,使用递归把基准元素左、右分别快排 [low, p_pos-1]、[low+1, high]
  1. public void quickSort(int[] array, int low, int high) {
  2. if (low < high) {
  3. int p_pos = low, pivot = array[p_pos], temp;
  4. for (int i = low+1; i <= high; i++) {
  5. if (array[i] < pivot) {
  6. p_pos++;
  7. temp = array[p_pos];
  8. array[p_pos] = array[i];
  9. array[i] = temp;
  10. }
  11. }
  12. temp = array[low];
  13. array[low] = array[p_pos];
  14. array[p_pos] = temp;
  15. quickSort(array, low, p_pos-1);
  16. quickSort(array, p_pos+1, high);
  17. }
  18. }

2. 排序算法稳定性和复杂度

image.png
image.png