gpt4 book ai didi

algorithm - 快速排序相同数字的数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:02:15 24 4
gpt4 key购买 nike

我正在尝试学习快速排序算法的工作原理。我通过阅读 CLR 算法书来做到这一点。我似乎无法弄清楚该算法如何适用于相同数字的数组,而且我无法在网上找到任何示例。例如,快速排序算法的进程是什么:

{5h, 5i, 5j, 5k, 5m, 5n}

字符 (h,i,j,k,m,n) 只是用来区分不同的 5预先感谢您的帮助!

最佳答案

That damn book如果他们使用合理的变量名称可能会更容易理解,但我猜他们不想偏离用于所有数学的普通单字母变量约定。

我试图保留它们的函数和变量名称并几乎复制代码,包括它们使用的“数组从 1 开始”约定。我模仿了非随机枢轴版本。

演示:http://jsfiddle.net/p7R99/

或者只是将以下内容放入 .html 文件中

<pre id="out">
</pre>

<script>
function QUICKSORT(A, p, r) {
if (p < r) {
var q = PARTITION(A, p, r);
output("q=" + q + " and A=" + arr(A) + "\n");
QUICKSORT(A, p, q - 1);
QUICKSORT(A, q + 1, r);
}
}

function PARTITION(A, p, r) {
var x = A[r];
var i = p - 1;
for (var j = p; j < r - 1; j++) {
if (intval(A[j]) <= intval(x)) {
i = i + 1;
swap(A, i, j);
}
}
swap(A, i + 1, r);
return i + 1;
}

function intval(str) {
return parseInt(str, 10);
}



function swap(A, i, j) {
var tmp = A[i];
A[i] = A[j];
A[j] = tmp;
}

function output(msg) {
var ele = document.getElementById("out");
ele.innerHTML += msg;
}
function arr(A) {
return A.slice(1).join(" ");
}


var A = [undefined, "5h", "5i", "5j", "5k", "5m", "5n"];
QUICKSORT(A, 1, A.length);
</script>

结果

q=1 and A= 5i 5j 5k 5m 5n 5h
q=6 and A= 5i 5j 5k 5m 5h 5n
q=4 and A= 5i 5j 5m 5k 5h 5n
q=2 and A= 5j 5i 5m 5k 5h 5n

关于algorithm - 快速排序相同数字的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13144831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com