对数组的快速排序

问题描述 投票:-2回答:1

我有一个数组A = | 0.535 | 0.960 | 0.750 | 0.750 | 0.151 | 0.001 | 0.981 | 0.327 | 0.111 |

我将枢轴设为0.535

我将A [1] = 0.960换为A [8] = 0.111得到

A = | 0.535 | 0.111 | 0.750 | 0.750 | 0.151 | 0.001 | 0.981 | 0.327 | 0.960 |

然后我将A [2] = 0.750换为A [7] = 0.327得到

A = | 0.535 | 0.111 | 0.327 | 0.750 | 0.151 | 0.001 | 0.981 | 0.750 | 0.960 |

现在,我对下一步做什么感到困惑(将0.75与0.75比较),因为值0.151小于枢轴,而0.981大于枢轴。有人可以指导我吗?

sorting quicksort
1个回答
0
投票
我不知道您要寻找什么。但是,如果您想知道快速排序的工作原理,那么请遍历数组。应该提到的是,我们将把第一个最左边的元素作为枢轴。

function qsort(x, lo, hi) { var i, p; if (lo >= hi) { return; } p = lo; for (i = lo + 1; i <= hi; i++) { if (x[i] < x[lo]) { swap(x, ++p, i); } } swap(x, lo, p); qsort(x, lo, p - 1); qsort(x, p + 1, hi); }
正如您说的那样,第一步获得0.535作为枢轴,它将通过第二个元素(来自枢轴)遍历您的元素,如果小于所选的枢轴,它将在第二个元素处更改该元素的位置(如果找到)第二个元素较小,它将随着第三个元素的位置而改变,依此类推。最后,它将使用大于其的position = total元素更改枢轴的位置。因此,选择0.535后,数组将类似于:

[[0.111,0.151,0.001,0.327,0.535,0.75,0.981,0.75,0.96]。

然后该枢轴为0.111,然后数组将像:

[0.001,0.111,0.151,0.327,0.535,0.75,0.981,0.75,0.96]。

再次枢轴= 0.151和数组:

[0.001,0.111,0.151,0.327,0.535,0.75,0.981,0.75,0.96]

再次枢轴= 0.75和数组:

[0.001,0.111,0.151,0.327,0.535,0.75,0.981,0.75,0.96]

再次枢轴= 0.981和数组:

[0.001,0.111,0.151,0.327,0.535,0.75,0.96,0.75,0.981]

再次枢轴= 0.96和数组:

[0.001,0.111,0.151,0.327,0.535,0.75,0.75,0.96,0.981]

© www.soinside.com 2019 - 2024. All rights reserved.