我的气泡排序正在数组中引入'0'的值
My bubble sort is introducing values of '0' in array
我在C++程序中使用了"气泡排序",但它在分数贪婪程序中的数组中引入了随机的"0"值
int sorteaza()
{
int aux,schimb,i;
do
{
schimb=0;
for (i=0;i<=n;++i)
if (G[i][3]<G[i+1][3])
{
swap(G[i], G[i+1]);
}
}
while (schimb);
}
这是我的整个代码:
#include<iostream>
using namespace std;
int n; // Numarul de elemente
float G[100][3]; // Obiecte + detalii masa profit potenta
int masa = 0;
int read_data()
{
cout << "Greutatea Rucsac" << endl;
cin >> masa;
cout << "Obiecte: " << endl;
cin >> n;
for(int i = 1; i<=n;i++)
{
for(int j = 1; j<=2;j++)
{
cin >> G[i][j];
if(G[i][1] != 0 && G[i][2] != 0)
{
G[i][3] = G[i][2] / G[i][1];
}
}
}
}
// 2 500
// 4 500
int sorteaza()
{
int aux,schimb,i;
do
{
schimb=0;
for (i=0;i<=n;++i)
if (G[i][3]<G[i+1][3])
{
swap(G[i], G[i+1]);
}
}
while (schimb);
}
int verify()
{
for(int i = 1; i<=n;i++)
{
for(int j = 1; j<=3;j++)
{
cout << G[i][j];
cout << endl;
//G[i][3] = G[i][1] / G[i][2];
}
}
}
int greedy()
{
float profit = 0;
int i = 1;
int aux;
while(i<=n && masa>=0)
{
//cout << "G[i][1]: " << G[i][1] << endl;
if(masa>=G[i][1]) {
//cout << "Am ajuns aici";
profit=profit+G[i][2];
masa=masa-G[i][1];
}
else {
//cout << "Am ajuns dincolo";
aux= (masa*100)/G[i][1];
profit = profit + (aux * G[i][2])/100;
break;
}
i++;
}
cout << profit;
}
int main()
{
read_data();
sorteaza();
verify();
// greedy();
}
学习从零开始索引所有数组。
float G[100][3];
法律索引为 0 到 99 和 0 到 2。所以这段代码应该是
for (int i = 0; i < n; i++)
{
for (int j = 0; j < 2; j++)
{
cin >> G[i][j];
}
if (G[i][0] != 0 && G[i][1] != 0)
{
G[i][2] = G[i][1] / G[i][0];
}
}
而这段代码应该是
if (G[i][2] < G[i+1][2])
{
swap(G[i], G[i+1]);
}
所有数组都从零开始。我相信你已经被告知这一点,但你必须开始将其付诸实践。
一般来说,像这样写你的 for 循环
for (int i = 0; i < N; ++i)
这是大小N
数组的正确循环。
您可能需要<n
而不是≤n
(这就是未初始化值即 0 的来源(。你错过了气泡排序中的一个循环。现在,您只是将最小的元素冒泡到列表的末尾。
也不知道你在用那个schimb
和同时条件做什么。
此外,您将 G 定义为 float[100][3]
因此您不能使用 G[i][3]
,只能使用 G[i][2]
。
int sorteaza()
{
int i,j;
for (i=0; i<n; i++)
{
for (j=i+1; j<n; j++)
{
if (G[i][2] < G[j][2])
{
swap(G[i], G[j]);
}
}
}
}
相关文章:
- 具有不满足严格弱排序的值的 C++ 顺序范围
- 未按值排序的std::find和std::any_of
- 如何根据数组对应向量的值对数组进行排序
- 根据类外的值对向量进行排序
- 获取位于特定区间的已排序值列表的子列表的最短方法
- 是否有用于排序和查找 c++ 中是否已存在的值的函数?
- 哈希函数中同一键的不同值和良好的哈希值排序
- 合并排序返回错误的值
- std::sort 以严格的弱排序崩溃 - 与垃圾值进行比较
- 根据类中另一个对象 C++ 的值对类中的二维对象进行排序并赋予值
- 我的气泡排序正在数组中引入'0'的值
- 如何在合并排序中设置 mid 的值
- 在数组C 中排序最大和最小的值
- 我如何根据第一或第二个对更大的值对成对排序
- 删除已排序链表中的值
- 为什么我的选择排序返回原始向量中不在的值
- 如何根据其中一个成员的值对结构数组进行排序,从而在另一个成员的基础上断开联系
- [C++]按类成员的值对对象进行排序
- 获取按地图值排序的映射键向量的最快方法
- 如何在std::map上迭代返回基于键值排序的元素