JavaScript 和 Java 中的快速排序
Quicksort in JavaScript and Java
我刚刚发现了一个奇怪的问题。我尝试使用JavaScript来实现基于Java编写的代码的快速排序,但是,结果不是我所期望的。爪哇代码:
public class Sort {
public static void main (String[] args){
int[] number = {1,10,2,2,2,3,5,7,8,2};
for (int i = 0; i < number.length ; i++) {
System.out.println(quickSort(number)[i]);//1,2,2,2,2,3,5,7,8,10
}
}
static int[] quickSort(int[] number){
int length = number.length;
int start = 0;
int end = length -1;
number = quick_sort (start,end,number);
return number;
}
private static int[] quick_sort(int start,int end,int[] number) {
int pivot = number[(start+end)/2];
int s = start;
int e = end;
while (s <= e) {
while(number[s] < pivot) {
s++;
}
while(number[e] > pivot) {
e--;
}
//swap the value
if (s <= e) {
int temp = number[s];
number[s] = number[e];
number[e] = temp;
//move both sides cursor
s++;
e--;
}
}
// recursively sorting lower half
if (start < e) {
quick_sort(start, e, number);
}
//recursively sorting higher half
if (end > s) {
quick_sort(s, end, number);
}
return number;
}
}
JavaScript :
function main() {
var numbers = [1,10,2,2,2,3,5,7,8,2];
var length = numbers.length;
var start = 0;
var end = length - 1;
alert(quickSort(start, end, numbers));//2,3,5,8,7,2,1,2,2,10 <----- not sorted
}
function quickSort(start, end, numbers) {
var s,e,temp,pivot;
s = start;
e = end;
pivot = numbers[(start+end)/2];
while(s<=e){
while(numbers[s] < pivot ) {
s++;
}
while(numbers[e] > pivot) {
e--;
}
if(s<=e) {
temp = numbers[s];
numbers[s] = numbers[e];
numbers[e] = temp;
e--;
s++;
}
}
if(start < e) {
quickSort(start, e, numbers);
}
if(end > s) {
quickSort(s, end, numbers);
}
return numbers;
}
main();
用Java编写的代码给出的结果是1,2,2,2,3,5,7,8,10,在另一个硬代码中,用JavaScript编写的代码产生的结果是2,3,5,8,7,2,1,2,2,10,这与原始数组不同,但仍然没有正确排序。对此有什么想法吗?提前致谢
编辑:
感谢您的回复,我正在研究逻辑而不是基础知识。
(start+end)/2
在JS中不一定是整数。它适用于Math.floor((start+end)/2)
.
相关文章:
- 快速排序程序未正确输出
- 为什么本机浏览器排序功能的工作速度比快速排序慢
- Javascript中的快速排序-错误过多的递归
- Go 中的快速排序实现
- 有没有人有可以在对象上使用的 Javascript 快速排序
- 如何在 Node.js 上编写快速排序
- 如何根据本地存储中的变量快速排序
- Javascript Bug中的快速排序
- 对于我的快速排序算法,我如何使它对字符串和对象也进行排序
- Javascript快速排序算法实现
- JavaScript 和 Java 中的快速排序
- 为什么这个功能版本的快速排序会中断?我该如何修复它
- JavaScript快速排序对象
- 如何在Redux中存储一个排序集,并根据不同的键对其快速排序
- 运行快速排序时Javascript崩溃
- 为什么我的Java快速排序不移植到Javascript
- 使用Javascript或jQuery按表的第一列快速排序
- 这是一个合法的快速排序实现吗?它的复杂性是什么?
- JavaScript快速排序中的无限递归
- 在 javascript 中的快速排序实现中交换元素