假设计算机系统具有2GB的堆,并且应用程序的调用堆栈大小为1MB。 Quicksort用于对存储在堆上的数组进行排序(即,它存储在计算机的内部存储器中而不是存储在文件中)。假设每次对quicksort的递归调用都需要将256个字节分配给调用堆栈。解释为什么对quicksort的调用不会导致堆栈溢出,无论正在排序的数组的大小如何。您应该假设对quicksort的调用导致算法的平均情况O Notation运行时间。
我的问题是,如果存储在堆中的元素数量非常大,它可能会使用超过1MB的内存,因为递归函数会调用很多次。那怎么能不导致堆栈溢出呢?