the code below is how I did selection sort, but now I need to do it with Tree Sort algorithm, I need to use that struct and vector. please do not use pointer, node, or class because I haven’t learn it. So the key is to code a Tree Sort algorithm for this project.

#include<iostream>
#include <fstream>
#include <vector>
#include <string>
#include <ctime> // clock(); CLOCKS_PER_SEC, clock_t

using namespace std;

//Create a new data type Student
struct Student {
string name;
double score;

};
/* Function Declaration*/
void FillVector(string fileName, vector<Student> & studentsList);
void DisplayStudent(vector<Student> & studentsList);
void StudentSort(vector<Student> & studentsList);
double getMilliSeconds(clock_t c);
void outputStudentsSort(vector<Student> & studentsList);

int main()
{
unsigned int t1, t2;
string fileName;
vector<Student> studentsList;

cout << “Enter name of the file: “;
getline(cin, fileName);

FillVector(fileName, studentsList);

cout << “nData of students Found in the text file:” << endl;
DisplayStudent(studentsList);

t1 = clock();
StudentSort(studentsList);
t2 = clock();
cout << ” nTime = ” << getMilliSeconds(t2 – t1) << “milliseconds” << endl;

cout << “nData of students sort by scored :” << endl;
DisplayStudent(studentsList);
outputStudentsSort( studentsList);

system(“pause”);
return 0;
}
//Function Definition
void FillVector(string fileName, vector<Student> & studentsList) {

ifstream inFS;
string name;
double score;
Student newStudent;

//open file
inFS.open(fileName);

if (!inFS.is_open())
{
cout << ” Could not open the file ” << fileName << endl;
cout << “Press any key …..” << endl;
cin.get();
exit(0);
}

//get information of the file
while (!inFS.eof())
{
inFS >> name >> score;
newStudent.name = name;
newStudent.score = score;
studentsList.push_back(newStudent);
}

//close file
inFS.close();
}
void DisplayStudent(vector<Student> & studentsList) {

for (int index = 0; index < studentsList.size(); index++)
{
cout << studentsList[index].name << “t” << studentsList[index].score << endl;
}
}
// Selection Sort by score
void StudentSort(vector<Student> & studentsList) {

int minIndex;
double tempScore;
string tempName;
// One by one move boundary of usorted subarray
for (int i = 0; i < studentsList.size() – 1; i++) {

minIndex = i; // minimal element index

for (int j = i + 1; j < studentsList.size(); j++) {

if (studentsList[j].score < studentsList[minIndex].score) {
minIndex = j;
}
}

// Swap the found minimum element with the first element
tempScore = studentsList[i].score;
studentsList[i].score = studentsList[minIndex].score;
studentsList[minIndex].score = tempScore;

tempName = studentsList[i].name;
studentsList[i].name = studentsList[minIndex].name;
studentsList[minIndex].name = tempName;
}

}
void outputStudentsSort(vector<Student> & studentsList) {
ofstream OutFS;
OutFS.open(“SelectionSortStudents.txt”);

for (int index = 0; index < studentsList.size(); index++)
{
OutFS << studentsList[index].name << “t” << studentsList[index].score << endl;
}
OutFS.close();
}
double getMilliSeconds(clock_t c) {
double time;
time = (double(c) / CLOCKS_PER_SEC) * 10000;
return time;
}

Is this the question you were looking for? Place your Order Here