排序都有哪几种方法?请列举。用 JAVA 实现一个快速排序
答:排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序);
快速排序的伪代码:
//使用快速排序方法对 a[ 0 :n- 1 ]排序
从 a[ 0 :n- 1 ]中选择一个元素作为 middle,该元素为支点;
把余下的元素分割为两段 left 和 right,使得 left 中的元素都小于等于支点,
而 right 中的元素都大于等于支点;
递归地使用快速排序方法对 left 进行排序;
递归地使用快速排序方法对 right 进行排序;
所得结果为 left + middle + right。