对给定的一组数字执行快速排序算法，并说明每个步骤的细节，直到数组完全排序。 
数组: 5, 3, 8, 6, 2, 7, 1, 4
以下是对给定数组执行快速排序的步骤：
1. 选择最后一个元素（4）作为主元(pivot)。

2. 将数组重新排列为 {2, 3, 1, 4, 5, 7, 8, 6}。

3. 将主元(4)放置在正确的位置，即所有小于主元的数(2, 3, 1)在它的左边，所有大于主元的数(5, 7, 8, 6)在它的右边。为此，可以使用 partition 子例程，该子例程在每个迭代中交换值以将 Pivot 放置在正确的位置，并返回它的位置。

4. 对分割的两个子数组（{2, 3, 1}和{5, 7, 8, 6}）分别调用递归快速排序。

5. 对子数组 {2, 3, 1} 进行快速排序，其中主元为 1。

6. 将子数组 {2, 3, 1} 重新排列为 {1, 2, 3}。

7. 对子数组 {5, 7, 8, 6} 进行快速排序，其中主元为 6。

8. 将子数组 {5, 7, 8, 6} 重新排列为 {5, 6, 7, 8}。

9. 将排序后的子数组进行合并，得到最终结果：{1, 2, 3, 4, 5, 6, 7, 8}。

因此，快速排序的步骤是：选择主元，将数组重新排列为两个子数组，分别对子数组进行递归排序，最后将排序后的子数组进行合并，得到排序数组。