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);
}