code a tree sort for c without pointers or class

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;

}