Hjälp mig med att förstå vad som blev fel (bubblesort)
Hej!
Har gjort bubblesort på 4 familjemedlemmar och den ska sortera i ordning och därefter tala om vilken plats.
Se nedanför.
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class person
{
public:
string name;
int age;
void print()
{
cout << "Name: " << name <<", "<< age << " years old." << endl;
}
void setInfo(string _name, int _age)
{
name = _name;
age = _age;
}
};
int linearsearch(person p[], int n, int a)
{
for (int i = 0; i < n; i++)
{
if (p[i].age == a)
return i;
}
return -1;
};
void bubblesort(person p[], int n)
{
for (int i = 0; i < n; i++)
{
int nrLeft = n - i;
for (int j = 0; j < nrLeft; j++)
{
if (p[j].age > p[j+1].age)
{
person temp = p[j];
p[j] = p[j+1];
p[j+1] = temp;
}
}
}
}
int main()
{
cout << " Unsorted list " << endl;
person family[3];
family[0].setInfo("Johanna", 9);
family[0].print();
family[1].setInfo("Per", 3);
family[1].print();
family[2].setInfo("Gunnar", 37);
family[2].print();
family[3].setInfo("Maja", 36);
family[3].print();
cout << endl << " Sorted list " << endl;
bubblesort(family, 4);
for (int i = 0; i < 4; i++)
cout << "Name: " << family[i].name << ", " << family[i].age << " years old." << endl;
int index = linearsearch(family, 4, 36);
if (index == -1)
cout << "The person can't be find!";
else
cout << endl << family[index].name << " can be find on place " << index << " in the list.";
cin.get();
return 0;
}
När jag startar programmet
Unsorted list
Name: Johanna, 9 years old.
Name: Per, 3 years old.
Name: Gunnar, 37 years old.
Name: Maja, 36 yers old.
Sorted list
Name: Per, 3 years old.
Name: Johanna, 9 years old.
Name: Maja, 36 years old.
Name: Gunnar, 37 years old.
Maja can be find on place 2 in the list.
Maja hamnar på andra plats och det stämmer inte.
Någon som kan förklara för mig vad jag har missat?