Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript排序。分配失败进程内存不足错误_Javascript_Memory Management_Out Of Memory_Quicksort - Fatal编程技术网

Javascript排序。分配失败进程内存不足错误

Javascript排序。分配失败进程内存不足错误,javascript,memory-management,out-of-memory,quicksort,Javascript,Memory Management,Out Of Memory,Quicksort,我的Javascript代码中出现错误“致命错误:调用和重试0分配失败-进程内存不足”。如何运行此代码?我看不到代码中有任何缺陷,因为我在Python中做的事情与在Python中完全相同,它在Python中工作,但在Javascript中我得到了内存错误。下面是我的代码 var sample_arr = [-1, 5, 7, 4, 0, 1, -5] function My_Partition(container, first_index, last_index) {

我的Javascript代码中出现错误“致命错误:调用和重试0分配失败-进程内存不足”。如何运行此代码?我看不到代码中有任何缺陷,因为我在Python中做的事情与在Python中完全相同,它在Python中工作,但在Javascript中我得到了内存错误。下面是我的代码

   var sample_arr = [-1, 5, 7, 4, 0, 1, -5]
   function My_Partition(container, first_index, last_index) {
       var x = container[last_index];
       var i = first_index - 1;

       for (var elem = 0; elem < container.length-1; elem++) {
               if (container[elem] <= x) {
               i += 1;
               var temp_1 = container[i];
               container[i] = container[elem];
               container[elem] = temp_1;
           }
       }
       var temp_2 = container[i+1];
       container[i+1] = container[last_index];
       container[last_index] = temp_2;

       return i+1;
   }


   function My_Quick_Sort(container, first_index, last_index) {
       if (first_index < last_index) {
           var mid = My_Partition(container, first_index, last_index);
           My_Quick_Sort(container, first_index, mid-1);
           My_Quick_Sort(container, mid+1, last_index);
       }
   }
   My_Quick_Sort(sample_arr, 0, sample_arr.length-1);
   console.log("Sorted Array:", sample_arr);
var sample_arr=[-1,5,7,4,0,1,5]
函数My_分区(容器、第一个_索引、最后一个_索引){
var x=容器[最后的索引];
var i=第一个指数-1;
for(var elem=0;elem如果(容器[elem],那是一场相当壮观的崩溃

因此,由于这看起来像是某种家庭作业/练习,而不是回答问题,让我们回答问题背后的问题:“我如何找出如何解决这样的问题?”最好的方法通常是提出一个理论,然后找到一种测试方法

理论1:堆栈溢出

通常,如果内存不足,一个明显的猜测是堆栈溢出。要尝试并测试这一点,让我们看看是否可以设置函数调用次数的限制,并在以下情况下运行:

哎呀!这仍然崩溃。我想这不是堆栈溢出,因为我们限制了调用这两个函数的次数

理论2:循环

让我们尝试另一种理论。也许发生的是一个无限循环。让我们记录循环调用(点击JSFIDLE)


请注意,它在循环中停留了100多次。对于一个简单的排序来说,这太多了。此时,您可能需要添加一个console.log调用并打印出局部变量。请尝试console.log(elem)或console.log(container.length),或者两者兼而有之。

这是一个非常壮观的崩溃

因此,由于这看起来像是某种家庭作业/练习,而不是回答问题,让我们回答问题背后的问题:“我如何找出如何解决这样的问题?”最好的方法通常是提出一个理论,然后找到一种测试方法

理论1:堆栈溢出

通常,如果内存不足,一个明显的猜测是堆栈溢出。要尝试并测试这一点,让我们看看是否可以设置函数调用次数的限制,并在以下情况下运行:

哎呀!这仍然崩溃。我想这不是堆栈溢出,因为我们限制了调用这两个函数的次数

理论2:循环

让我们尝试另一种理论。也许发生的是一个无限循环。让我们记录循环调用(点击JSFIDLE)


请注意,它在循环中停留了100多次。对于简单排序来说,这太多了。此时,您可能需要添加一个console.log调用并打印出局部变量。请尝试console.log(elem)或console.log(container.length),或者两者兼而有之。

通过这种排序,你想实现什么?我试图对一个混乱的数组进行排序,以获得一个排序的版本。通过这种排序,你想实现什么?我试图对一个混乱的数组进行排序,以获得一个排序的版本。非常感谢。我对Javascript非常陌生,这种错误我从未见过。所以Javascript无法处理这个问题rting?我想知道我是否可以用Javascript的方式解决这个问题,因为相同的代码在许多其他语言中都可以工作。我缺少什么?你能帮我吗?这不是家庭作业。我只是自学。非常感谢!在Python中你使用了len()对吗?在Python中尝试print()len(),然后尝试console.log()JavaScript中的container.length。你应该得到相同的数字,对吗?是吗?Console.log是你的朋友。看看这个版本,看看控制台:哦,很容易看出哪里出了问题。但仍在努力找出如何纠正错误。非常感谢!非常感谢。我对JavaScript和这种错误非常陌生我从来没有见过。所以Javascript不能处理这种排序?我想知道我是否可以用Javascript的方式解决这个问题,因为相同的代码在许多其他语言中都可以工作。我缺少什么?你能帮我吗?这不是家庭作业。我只是自学。非常感谢!在Python中你正在使用len()对吗?在Python中尝试print()len(),然后尝试console.log()JavaScript中的container.length。你应该得到相同的数字,对吗?是吗?Console.log是你的朋友。看看这个版本,看看控制台:哦,很容易看出哪里出了问题。但仍然在努力找出如何纠正错误。非常感谢!
   var sample_arr = [-1, 5, 7, 4, 0, 1, -5];
   var stop_running = 0;
   function My_Partition(container, first_index, last_index) {
       if (stop_running++ > 100) return;
       ...
   }


   function My_Quick_Sort(container, first_index, last_index) {
       if (stop_running++ > 100) return;
       ...
   }
   My_Quick_Sort(sample_arr, 0, sample_arr.length-1);
   console.log("Sorted Array:", sample_arr);