求助快速排序算法,0xC00000FD: Stack overflow (参数: 0x00000001, 0x00282F9C)。

dbdxliudiwen 2014-04-21 12:24:12
0x00191879 处的第一机会异常(在 QuickSort.exe 中):
0xC00000FD: Stack overflow (参数: 0x00000001, 0x00282F9C)。
如有适用于此异常的处理程序,该程序便可安全地继续运行。

//快速排序算法,不知道什么原因,我的代码只能对没有排好序的数组排序
// 而对于已经排好序的数组,int a[MAX_SIZE],如果定义比MAX_SIZE较小的时候,调用Quick_Sort函数是没有问题的,但是如果定义MAX_SIZE比较大,那么程序就会出现上述错误

#include <iostream>
#include <iomanip>
using namespace std;

#define MAX_SIZE 10000
template<typename T>
void Quick_Sort(T *a, int left, int right);

int main()
{

int array[MAX_SIZE];
for(int i=0; i<MAX_SIZE; i++)
array[i]= i;
Quick_Sort( array, 0, MAX_SIZE-1);

system("pause");
return 0;
}

template<typename T>
void Quick_Sort(T *a, int left, int right)
{
int i=left, j=right;
T base= *(a+left);
if(right<=left)
return ;
while( i< j)
{
while(i< j && *(a+j )>= base )
j--;
if(i<j)
*(a+i)= *(a+j);
while(i< j && *(a+i)<=base )
i++;
if(i<j)
*(a+j)= *(a+i);
}

if(i==j)
*(a+i)= base;
Quick_Sort( a, left, i-1 );
Quick_Sort( a, i+1, right);
}


...全文
664 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dbdxliudiwen 2014-04-24
  • 打赏
  • 举报
回复
什么排版??
toberich 2014-04-23
  • 打赏
  • 举报
回复
排版都不会?
dbdxliudiwen 2014-04-22
  • 打赏
  • 举报
回复
这完全是一样的算法和递归次数,一个有stack overflow,另一个却不会出现这种情况
dbdxliudiwen 2014-04-22
  • 打赏
  • 举报
回复
可是我调用下面这个函数却不会出现这个情况,请问能帮我解释下么 void qsort(int v[], int left, int right) { int i, last; void swap(int v[], int i, int j); if (left >= right) return; last = left; for (i = left + 1; i <= right; i++) if (v[i] < v[left]) swap(v, ++last, i); swap(v, left, last); /* restore partition elem */ qsort(v, left, last-1); qsort(v, last+1, right); } void swap(int v[], int i, int j) { int temp; temp = v[i]; v[i] = v[j]; v[j] = temp; }
bigfog 2014-04-21
  • 打赏
  • 举报
回复
递归调用,使用栈实现的,而栈的大小一般由编译系统指定,不是非常大,所以就会Stack overflow 因此,要应付大数据,不要用递归
kenny_hwei 2014-04-21
  • 打赏
  • 举报
回复
Stack overflow,往往是由于死递归造成的
1、课程简介          ElasticStack 是一系列开源产品的合集,包括 Elasticsearch、Kibana、Logstash 以及 Beats 等,能够安全可靠地获取任何来源、任何格式的数据,并且能够实时地对数据进行搜索、分析和可视化。其中,Logstash和Beats负责数据的收集,Kibana负责结果数据的可视化展现,Elasticsearch作为核心部分用于数据的分布式存储以及索引。   我们可以使用ElasticStack进行收集并处理任何数据,最为经典的是用于实时日志数据的收集、存储、展现。在此之前,如果实现实时日志的分析,需要经过繁琐的架构设计并且使用多个系统实现,现在只需要使用ElasticStack即可实现功能强大的实时日志分析系统,ElasticStack不仅仅用来做日志分析,它可以处理任何的数据并且进行存储、展现。          在本套课程中,我们将全面的讲解ElasticStack技术栈,从环境的部署到技术的应用,再到项目实战,让我们不仅是学习框架技术的使用,而且可以学习到使用ElasticStack如何解决实际的问题,我们通过收集系统日志数据、服务器指标数据、nginx的运行数据等,多维度的展示了ElasticStack的应用范围,最终将分析的结果数据非常友好的展现出来,没错!不需要前端的参与也可以做出“高大上”的结果显示页。   2、适应人群   有一定的Java基础,并且要有一定的web开发基础。   3、课程亮点          系统的学习ElasticStack技术栈,掌握最先进的搜索、数据收集等技术。   l  Elasticsearch   n  快速入门   n  核心详解   n  中文分词   n  Elasticsearch集群   n  Java客户端的应用   l  Beats & Kibana & Logstash   n  Filebeat(文件采集器)   n  Metricbeat(指标采集器)   n  采集Nginx的日志以及指标数据   n  Kibana自定义仪表盘   n  Logstash自定义数据处理   l  综合练习   n  收集APP产生的日志进行实时展现   n  Filebeat采集日志   n  Logstash处理数据   n  Kibana 自定义仪表盘展现   4、主讲内容   章节一:Elasticsearch入门   1.     快速入门   2.     核心讲解   3.     中文分词   4.     全文搜索   5.     Elasticsearch集群   章节二:Beats   1.     Beats 简介   2.     Filebeat采集Nginx日志   3.     Metricbeat采集Nginx指标数据   章节三:Kibana   1.     Kibana简介   2.     Metricbeat 仪表盘   3.     Nginx 指标仪表盘   4.     Nginx 日志仪表盘   5.     自定义图表   章节四:Logstash   1.     Logstash简介   2.     配置详解   3.     读取自定义日志   章节五:综合练习   1.     流程说明   2.     Filebeat采集日志   3.     Logstash处理数据   4.     Kibana 自定义仪表盘展现

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧