使用冒泡排序对随机数量的动态数组进行排序
Use bubblesort to sort a random number of dynamic array
#include <iostream>
#include <cstdlib>
using namespace std;
void bubblesort(double *array, int size);
void showarray(double* array, int size);
void main()
{
int arraysize;
double *iptr = nullptr;
cout << "Enter the array size you want" << endl;
cin >> arraysize;
iptr = new double[arraysize];
for (int i = 0; i < arraysize; i++)
{
iptr[i] = (rand() % 10) + 1;
cout << "Number " << i + 1 << ":" << iptr[i] << endl;
}
cout << "Array after arrange" << endl;
bubblesort(iptr, arraysize);
showarray(iptr, arraysize);
delete[] iptr;
iptr = nullptr;
system("Pause");
}
void bubblesort(double *array, int size){
bool swap;
double temp;
do
{
swap = false;
for (int i = 0; i < size; i++)
{
if (array[i] > array[i + 1])
{
temp = array[i];
array[i] = array[i + 1];
array[i + 1] = temp;
swap = true;
}
}
} while (swap);
}
void showarray(double *array, int size){
for (int i = 0; i < size; i++)
{
cout << array[i] << " " << endl;
}
}
这是我的小程序。我正在尝试执行气泡排序函数来对我的随机数数组进行排序。但是我保持无法运行该程序,也找不到问题。它不断弹出触发断点的窗口。
您可以越
界访问您的array
。如果你的数组有 N 个元素,你的元素的索引 ar 0, 1, 2 ..N-1。像这样调整你的代码:
void bubblesort(double *array, int size){
bool swap;
do
{
swap = false;
for (int i = 0; i < size-1; i++)
// ^^ because you access to i+1
{
if (array[i] > array[i + 1])
{
double temp = array[i];
array[i] = array[i + 1];
array[i + 1] = temp;
swap = true;
}
}
} while (swap);
}
在函数 bubblesort 中,当 i
等于 size - 1
时,尝试访问数组之外的内存
使用您的方法,可以通过以下方式编写函数
void bubble_sort( double *a, size_t n )
{
bool swap;
do
{
swap = false;
for ( size_t i = 1; i < n; i++ )
{
if ( a[i] < a[i - 1] )
{
double temp = a[i - 1];
a[i - 1] = a[i];
a[i] = temp;
swap = true;
}
}
} while ( swap );
}
此外,至少在每次迭代后减小函数中数组的上限会更有效,因为具有较高值的元素将被排序。
还要考虑到函数 main 没有参数应该声明像
int main()
相关文章:
- std::向量与传递值的动态数组
- 将数组动态分配到具有指针参数的函数中
- 我可以以某种方式使我的矢量/数组动态更改装置数量吗?
- 使用 new: "potentially uninitialized pointer"将对象数组动态分配给指针
- 为什么C 没有方便的方式来为多维数组动态分配内存
- 如何制作具有动态大小的数组?动态数组的一般用法(可能还有指针)
- c++中的数组动态内存分配
- 多维数组动态分配的内存图
- 如何在 c++ 中使用 2-D 固定数组为 4-D 数组动态分配内存
- C++ 我在数组/动态内存方面遇到了一些问题
- C++ 中从数组动态强制转换
- C++中高维数组动态内存分配的正确方法.
- 从 C++ 结构中包含的指针数组动态分配和访问内存
- 对象数组动态内存分配
- 为二维数组动态分配内存时出错
- 如何将2d数组动态分配给结构
- 为结构数组c++动态分配内存
- 将数组动态添加到多维数组
- 类中的类数组-动态数组(c++)有问题
- 分配对象数组动态冻结