我如何实现bubblesort以及在哪里实现
How do i implement bubblesort and where
任务是在我的"familyj"数组中实现一个bubblesort函数和一个linearsearch(又名"linsok")。数组同时保留了名称和年龄,所以我想根据它们的年龄对数组进行排序并打印出来。我让搜索引擎工作了,但现在我坚持使用冒泡引擎。
问题是我不知道如何让我的冒泡排序代码为这个代码工作。那么,我要在这里实现第二段代码吗?
#include <iostream>
#include <string>
using namespace std;
class Person
{
public:
string namn;
int alder;
void skrivUt(string _namn, int _alder)
{
namn = _namn;
alder = _alder;
}
};
int linsok(Person* PersonArray, int key)
{
for (int i = 0; i < 4; i++)
{
if (PersonArray[i].alder == key)
return i;
}
return -1;
}
int main()
{
Person familj[4];
familj[1].skrivUt("Emma",23);
familj[3].skrivUt("Emilia",29);
familj[2].skrivUt("Johan",26);
familj[0].skrivUt("Timmy ",21);
int index = linsok(familj,22); //the age of the person im looking for.
if(index== -1)
cout << "Personen hittades ej!"; //person not found
else
//prints out the persons name and the index.
cout << "Personen heter " << familj[index].namn << " hen finns på index " << index << endl;
cin.get();
return 0;
}
这是我以前使用的一段冒泡排序代码,它很有效。
int p [] = {10,56,73,23,31,24,43};
int a = 6;
for (int i = 0; i < a; i++)
{
int nrLeft = a - i;
for (int j = 0; j < nrLeft; j++)
{
if (p[j] > p[j+1])
{
int temp = p[j];
p[j] = p[j+1];
p[j+ 1] = temp;
}
}
}
for(int i = 0; i < 7; i++)
cout << p[i] << endl;
cin.get();
很可能您想将其转换为一个函数,将Person
对象数组及其大小传递给该函数,然后只访问要比较的部分。由于您将把它实现为一个函数,所以可以像使用linsok
函数一样使用它,尽管您可能希望它返回排序数组,而不是索引。以下代码的免责声明:既不运行也不编译
Person* bubbleSort(Person* p, int size)
{
for (int i = 0; i < size; i++)
{
int nrLeft = size - i;
for (int j = 0; j < nrLeft; j++)
{
if (p[j].alder > p[j+1].alder)
{
Person temp = p[j];
p[j] = p[j+1];
p[j+ 1] = temp;
}
}
}
return p;
}
这是基于你按阿尔德(我猜是年龄?我不会说瑞典语(?))对它们进行排序。你只需要提供签名,并根据你的需求进行更改,但基本的想法是,你只需要更改你比较的内容和数据类型。
另一种方法是返回一个int
或void
(但您应该返回一个int来告诉您它是否成功),并将一个指针传递给数组,因此Person**
在签名中,并直接对该数组进行操作,但这有点困难,而且可以说是不好的做法,具体取决于用例。
相关文章:
- 如果没有malloc,链表实现将失败
- 如何在c++中实现处理器调度模拟器
- 如何在c++中使用引用实现类似python的行为
- 实现无开销push_back的最佳方法是什么
- 使用简单类型列表实现的指数编译时间.为什么
- 如何在BST的这个简单递归实现中消除警告
- 实现一个在集合上迭代的模板函数
- 我应该实现右值推送功能吗?我应该使用std::move吗
- 如何正确实现和访问运算符的各种自定义枚举器
- C++Union/Struct位域的实现和可移植性
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 在c++中实现LinkedList时,应出现未处理的错误
- 为左值和右值的包装器实现C++范围
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- 使用GSoap实现ONVIF
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 用于AVX的ln(x)的实现,m256
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 我如何实现bubblesort以及在哪里实现
- 如何使用向量实现bubblesort