【发布时间】:2016-04-15 04:16:27
【问题描述】:
我正在尝试使用指针和动态内存分配运行冒泡排序技术,但代码似乎没有运行(eclipse 崩溃)。请帮忙。我在下面发布代码:
#include<iostream>
using namespace std;
void sort(int *);
//===========================================
int main()
{
int *a = new int[5];
int *c = a;
cout << "Enter the numbers\n";
for(int i = 0; i < 5; i++)
{
cin >> *a;
a++;
}
a = a - 4;
sort(a);
cout << c;
cout<<"\nSorting complete";
cout<<"\n Array after sorting";
for(int i = 0; i < 5; i++)
{
cout << *c << endl;
c++;
}
delete []a;
delete []c;
a = c = NULL;
return 0;
}
//===========================================
void sort(int *a)
{
int *b = a + 1;
for(int i = 0; i < 5; i++)
{
if(*a > *b)
{
int temp = *a;
*a = *b;
*b = temp;
a++;
b++;
}
else
{
b++;
continue;
}
}
}
提前谢谢你。
【问题讨论】:
-
为什么不使用
std::vector(并整理出缩进) -
你为什么要这样分配输入?你真的应该做
cin>>*(a+i);,这样你就不会做更多的分配并可能引发范围问题。 -
@edheal 这很可能是家庭作业,他不能使用向量
-
你把它弄得太复杂了。从一个简单的场景开始,例如 int arr[5] = { 3, 5, 4, 2, 1 },然后调用 sort(arr) 对其进行排序。不要从用户那里获取输入,也不要使用任何动态分配或释放。一旦你知道如何用一个简单的案例来实现冒泡排序,那么如果需要的话,你可以添加其他的东西。
-
@AdityaKulkarni - 请不要感谢我 - 只需阅读文章并理解
标签: c++ pointers dynamic-memory-allocation bubble-sort