gpt4 book ai didi

c++ - QuickSort 中的错误分配

转载 作者:行者123 更新时间:2023-11-28 00:07:13 24 4
gpt4 key购买 nike

我正在执行 QuickSort,但出现 bad_alloc() 错误。有时代码运行完美,但有时我遇到错误。程序运行完美,排序正确,但仅当它运行但超过 4 次时它给我坏的 _alloc 错误。那么问题是什么??????

#include <iostream>
using namespace std;
void quicksort(int *a,int,int);
int main()
{
int i,j,*a;
a = new int[j];
cout<<"Enter the total element:";
cin>>j;
for(i=0;i<j;i++){
cout<<"Enter element:";cin>>a[i];
}
quicksort(a,0,j-1);
cout<<"After sorting."<<endl;
for(i=0;i<j;i++){
cout<<a[i]<<endl;
}
return 0;
}
void quicksort(int *a,int u,int d){
int key = a[u];
int upper = u;
int lower = d;
while(key>a[u] && u<lower){
u++;
}
while(key<a[d] && d>upper){
d--;
}
if(u<d){
swap(a[u],a[d]);
quicksort(a,upper,lower);
}
if(u>=d){
swap(key,a[d]);
if(upper!=d)
{
quicksort(a,upper,d-1);
}
if(d!=lower)
{
quicksort(a,d+1,lower);
}
}
}

最佳答案

移动语句

a = new int[j];

之后

cin>>j;

你正在分配“垃圾”,因为 j 取本地堆栈内存位置中的任何值!

关于c++ - QuickSort 中的错误分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34915112/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com