需要关于如何将我的随机数数组连接到冒泡排序的帮助
Needing help on how to connect my random number array into bubble sort
我有随机数数组的代码,这很有效。我需要以某种方式将我的随机数数组放入冒泡排序。我知道我需要std:copy,但不知道如何将其组合在一起,并使其同时显示两个cout。任何指导都会有所帮助。
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
// This is the Random number Array
srand (time (NULL));
const unsigned int sizeOfArray = 10;
int numberArray [sizeOfArray];
for (int i = 0; i < sizeOfArray; i++)
{
numberArray [i] = rand() % 100;
cout << numberArray [i] << endl;
}
// This is the code for bubble sort
int myArray [] ;
int swapHolder = -1;
for (int index = 0; index <10; index++)
{
if (myArray [index] > myArray [index + 1])
{
swapHolder = myArray [index + 1];
myArray [index + 1] = myArray [index];
myArray [index] = swapHolder;
}
}
for (int index = 0; index < 10; index++)
{
cout << myArray [index] << ", ";
}
cout << endl;
}
这看起来更像C代码,而不是C++代码。C++向量比数组更容易处理。例如,要将numberArray复制到myArray,您需要执行
int myArray[sizeOfArray];
std::copy(numberArray, numberArray + sizeOfArray, myArray);
如果您使用矢量
auto myVector = numberVector;
我怀疑是否需要复制数组。如果你只需要显示随机数的结果,只需在排序前和排序后打印出来。然后可以对现有数组进行排序。
在实用工具标题中,您可以找到std::swap,它将有效地处理一行中的交换。
由于两个原因,你的泡沫分类不会按原样工作。
循环从0到9,这是数组的大小。在上一次迭代中,您检查myArray[9]>myArray[10]。由于myArray[10]不存在,您将获得访问冲突。
第二个问题是,数组中的一个循环不会对其进行排序。最大的值将在数组的末尾,但最小的值只向下移动了一个点,不一定在开头。传统的做法是重复循环,直到不再进行交换。
如果这不是家庭作业,那么将排序分离到另一个函数中或使用内置排序也是有意义的。
您可以将Bubble排序的代码制作成一个函数,该函数将数组作为参数并输出一个新数组(这不是最有效的方法,但由于您既想要原始数组又想要排序的数组,这是最好的方法(
所以你可以做这个
int bubbleSort(int arr[], int cap){
// Your code here
}
然后你可以调用你的函数sortedRandomArray = bubbleSort(numberArray, sizeOfArray);
我的语法可能有点偏离,但这是做事的一般方式。将其分离并使其成为函数是一种很好的做法。
相关文章:
- 如何在C++中对数组进行冒泡排序
- 我想在 c++ 中对单向链表进行冒泡排序,但我一直面临左值错误,无法解决它
- 在C++中使用冒泡排序时出现意外值
- 冒泡排序中所需的交换次数,而无需实际对其进行排序
- 如何对文件中数组中的单个列进行冒泡排序?C++
- 需要关于如何将我的随机数数组连接到冒泡排序的帮助
- 冒泡排序无法对C++中的对象的动态数组进行排序
- 冒泡排序.C++
- 链表的冒泡排序
- 有没有选择排序优于冒泡排序的输入
- C++:如何使用冒泡排序来重新排列我的数据
- 冒泡排序随机数
- 矢量下标超出范围-冒泡排序
- 使用冒泡排序比较类对象
- 在c++中使用冒泡排序/交换对字符串进行排序
- 矢量下标超出范围错误,C++,冒泡排序
- 冒泡排序、选择排序和插入排序
- 使用冒泡排序c++对结构数组的成员进行优先级排序
- 冒泡排序链表C++
- 行搜索和冒泡排序的问题