对整个数组进行气泡排序
Bubble Sorting an Array in it's Entirety
正在做一项作业,我必须:
a. 创建三个 12+ 学生记录数组,包括 ID、学生姓名和
相应的电子邮件地址,– 学生证未按顺序排序。
b. 使用气泡排序或选择排序按学生 ID 对上述数据进行排序。
c. 二叉搜索五个来自排序数组的 ID 和第 6 个 ID,它不是来自数组。
我已经完成了所有工作,但排序只对学生 ID 进行排序,我似乎无法理解如何让气泡排序对"studentArray"中的姓名和电子邮件变量进行排序的逻辑。
#include <iostream>
#include <iomanip>
#include <string>
#include <cmath>
using namespace std;
struct Student {
string name;
int stuID;
string email;
};
void showInfo(Student *studentArray, int stuCount) {
cout << "Student Info: " << endl << endl <<
"ttStudent Name" << "ttStudent ID" << "ttStudent Email" << endl << endl;
for (int i = 0; i < stuCount; i++)
{
cout << "tt" << studentArray[i].name << "tt" << studentArray[i].stuID << "ttt" << studentArray[i].email << endl;
}
cout << endl;
}
void displayResult(Student studentArray[], int result, int studCount){
if (result==-1){
cout << "Student Id was Not Found"<<endl<< endl;
}
else
cout << "Student Name: " << studentArray[result].name<<endl
<< "Student ID: " <<studentArray[result].stuID<< endl
<< "Student Email: "<< studentArray[result].email<<endl<< endl;
}
int binarySearch(Student studentArray[], int stuCount, int idSearch)
{
int first = 0,
last = idSearch - 1,
middle,
position = -1;
bool found = false;
while (!found && first <= last)
{
middle = (first + last) / 2;
if (studentArray[middle].stuID == stuCount)
{
found = true;
position = middle;
}
else if (studentArray[middle].stuID > stuCount)
last = middle - 1;
else
first = middle + 1;
}
return position;
}
void bubblesortArray(Student *studentArray[], int stuCount)
{
bool swap;
int temp;
do{
swap = false;
for (int count = 0; count < (stuCount - 1); count++)
{
if (studentArray[count] > studentArray[count + 1])
{
temp = studentArray[count];
studentArray[count] = studentArray[count + 1];
studentArray[count + 1] = temp;
swap = true;
}
}
} while (swap);
}
void recordSearch(Student studentArray[], int stuCount)
{
int result;
int idSearch;
bool isChar=false;
for (int i=0; i<13;i++)
{
if (i<6)
{
cout << "Binary Search: Enter ID Number: ";
cin >> idSearch;
}
else if (idSearch>12||idSearch<0)
{
i--;
}
if(isChar)
{
cout<< "ERROR: Please enter valid number:";
}
result=binarySearch(studentArray,idSearch,stuCount);
displayResult(studentArray,result,idSearch);
}
}
int main() {
Student studentArray[13];
studentArray[0].name = "Bob McBoberston";
studentArray[0].stuID = 12;
studentArray[0].email = "BMcboberts@txstate.edu";
studentArray[1].name = "Shelby Donald";
studentArray[1].stuID = 1;
studentArray[1].email = "SDonald@txstate.edu";
studentArray[2].name = "Ronald Mcdonald";
studentArray[2].stuID = 11;
studentArray[2].email = "RMcdonald@txstate.edu";
studentArray[3].name = "Dick Cheney";
studentArray[3].stuID = 2;
studentArray[3].email = "DCheney@txstate.edu";
studentArray[4].name = "Ben Dover";
studentArray[4].stuID = 10;
studentArray[4].email = "BDover@txstate.edu";
studentArray[5].name = "Ash Katchum";
studentArray[5].stuID = 3;
studentArray[5].email = "AKatchum@txstate.edu";
studentArray[6].name = "Morty Smith";
studentArray[6].stuID = 9;
studentArray[6].email = "MSmith@txstate.edu";
studentArray[7].name = "Rick Sanchez";
studentArray[7].stuID = 4;
studentArray[7].email = "RSanchez@txstate.edu";
studentArray[8].name = "Johnny Bravo";
studentArray[8].stuID = 8;
studentArray[8].email = "JBravo@txstate.edu";
studentArray[9].name = "Tom N. Jerry";
studentArray[9].stuID = 5;
studentArray[9].email = "Tnjerry@txstate.edu";
studentArray[10].name = "Fred Flinstone";
studentArray[10].stuID = 7;
studentArray[10].email = "FFlinstone@emial.com";
studentArray[11].name = "Son Goku";
studentArray[11].stuID = 6;
studentArray[11].email = "sGoku@txstate.edu";
studentArray[12].name = "Johnny Test";
studentArray[12].stuID = 00;
studentArray[12].email = "JTest@txstate.edu";
int stuCount = 13;
showInfo(studentArray, stuCount);
bubblesortArray(studentArray,stuCount);
showInfo(studentArray,stuCount);
recordSearch(studentArray,stuCount);
return 0;
}
temp = studentArray[count].stuID;
studentArray[count].stuID = studentArray[count + 1].stuID;
studentArray[count + 1].stuID = temp;
您只交换 ID。交换整个学生对象:
temp = studentArray[count];
studentArray[count] = studentArray[count + 1];
studentArray[count + 1] = temp;
(您显然需要更改temp
类型)。
这基本上是使用struct
s和class
es的主要观点 - 将它们视为一个整体。
相关文章:
- 在气泡排序程序中未声明错误功能
- 气泡排序未正确循环
- 带有枚举方向/类型的气泡排序结构数组
- 在气泡排序中使用递归
- 如何在C++中实现气泡排序?
- 比较迭代器会使程序崩溃,而不会在自定义气泡排序实现中出现错误
- C++气泡排序的问题
- 气泡排序C++ OOP
- OOP 气泡排序C++程序
- 按升序对列表进行排序,C++使用气泡排序
- C++气泡排序
- 此气泡排序代码中的错误是什么?
- 气泡排序 2D 数组
- 如何使用气泡排序从最小到最大对 4 个数组进行排序? C++
- 添加气泡排序代码以排列列表
- 使用向量和气泡排序的动态内存分配
- 带修改(偏移)的气泡排序
- 使用C++进行气泡排序
- 选择排序与气泡排序C++
- 为什么我的气泡排序不适用于双精度数据类型?