Javascript Bug中的快速排序
Quicksort in Javascript Bug
希望在Javascript中获得一些关于快速排序算法的帮助(这不是为了家庭作业或其他什么,只是为了好玩)-它不起作用,我不确定哪里出了问题。
function quicksort ( arr ) {
// Launch the sorting process.
sort(arr, 0, arr.length - 1 );
/**
* swap
* takes in an array and two indexes,
* swaps the elements in the array at those indexes
*/
function swap ( arr, a, b ) {
var temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
function partition ( arr, l, r) {
var p = arr[r],
i = l - 1,
j = l;
while ( j < r - 1) {
if (arr[j] <= p) {
swap ( arr, ++i, j );
}
j++;
}
swap (arr, i + 1, r);
return i + 1;
}
function sort ( arr, l, r ) {
var p;
if (l < r) {
p = partition( arr, l, r );
sort( arr, l, p - 1);
sort( arr, p + 1, r);
} else {
console.log(arr);
}
}
}
好吧,我想我找到了。问题就在我的分区循环中,我过早地结束了它。这是完整的代码:
function quicksort ( arr ) {
// Launch the sorting process.
sort(arr, 0, arr.length - 1 );
/**
* swap
* takes in an array and two indicies,
* swaps the elements in the array at those indicies
*/
function swap ( arr, a, b ) {
var temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
function partition ( arr, l, r) {
var p = arr[r],
i = l - 1,
j = l;
while ( j < r) {
if (arr[j] <= p) {
swap ( arr, ++i, j );
}
j++;
}
// Put the pivot in its correct place
swap (arr, i + 1, r);
return i + 1;
}
function sort ( arr, l, r ) {
var p;
if (l < r) {
p = partition( arr, l, r );
sort( arr, l, p - 1);
sort( arr, p + 1, r);
} else if (l === arr.length) {
// Output the sorted array.
console.log(arr);
}
}
}
基本测试:
快速排序([19,12,1,2,3123,23,2,5])[1,2,2,3,5,12,19,23,123]
快速排序([8,3,2,5,1,3])[1,1,2,3,5,8]
对如何改进的建议持开放态度!:)
相关文章:
- 快速排序程序未正确输出
- 为什么本机浏览器排序功能的工作速度比快速排序慢
- Javascript中的快速排序-错误过多的递归
- Go 中的快速排序实现
- 有没有人有可以在对象上使用的 Javascript 快速排序
- 如何在 Node.js 上编写快速排序
- 如何根据本地存储中的变量快速排序
- Javascript Bug中的快速排序
- 对于我的快速排序算法,我如何使它对字符串和对象也进行排序
- Javascript快速排序算法实现
- JavaScript 和 Java 中的快速排序
- 为什么这个功能版本的快速排序会中断?我该如何修复它
- JavaScript快速排序对象
- 如何在Redux中存储一个排序集,并根据不同的键对其快速排序
- 运行快速排序时Javascript崩溃
- 为什么我的Java快速排序不移植到Javascript
- 使用Javascript或jQuery按表的第一列快速排序
- 这是一个合法的快速排序实现吗?它的复杂性是什么?
- JavaScript快速排序中的无限递归
- 在 javascript 中的快速排序实现中交换元素