Вопрос: С++ — как решить задачку про «Болты и Гайки»?

Лучший ответ: Задача лёгкая, но... это же Вас интервьюируют, а не коллективный интернет-разум.

Худший ответ: Пришел к этапу когда у меня есть два иднетичных массива, которые представляют собой пару ( болт + гайка )  Ex. arrayOfScrews[0] = arrayOfBolts[0], arrayOfScrews[1] = arrayOfScrews[1] и так далее.
Теперь в моей голове сложилась картина, что нужно сравнивать между собой, но не болт со следующим болтом, а болт со следующей гайкой, она ведь по размеру следующего болта.  
Люди добрые, кто может написать такую функцию? Голова уже совсем не варит
Вот код:#include <iostream>
#include <string>

using namespace std;

int const SIZE = 5;
int const SIZE2 = 2;
int const SIZE3 = 5;

class BoltsAndScrews
{

public:
	BoltsAndScrews();

	void DisplayBolts();
	void DisplayScrews();

	void DisplayArrayOfPairs();

	void addBolt(int);
	void addScrew(int);

	void findPairs();
	void fillOut2Darray(int, int);

	void Sort();


private:
	int numberOfScrews = 0;
	int numberOfBolts = 0;

	int counter1 = 0;
	int counter2 = 0;
	int max;

	int BoltsByMax[SIZE];
	int ScrewsByMax[SIZE];

	int arrayOfBolts[SIZE];
	int newArrayOfBolts[SIZE];
	int arrayOfScrews[SIZE];
	int newArrayOfScrews[SIZE];


	int arrayOfPairs[SIZE2][SIZE3];

};

BoltsAndScrews::BoltsAndScrews()
{

}

int main()
{


	BoltsAndScrews test1;

	test1.addBolt(1);
	test1.addBolt(2);
	test1.addBolt(3);
	test1.addBolt(4);
	test1.addBolt(5);

	test1.addScrew(5);
	test1.addScrew(4);
	test1.addScrew(3);
	test1.addScrew(2);
	test1.addScrew(1);

	cout << endl;
	test1.DisplayBolts();
	test1.DisplayScrews();
	cout << endl;
	test1.findPairs();
	cout << endl << endl;



	test1.DisplayArrayOfPairs();
	cout << endl << endl;
	test1.Sort();

	cin.get();
	cin.get();
	return 0;
}

void BoltsAndScrews::DisplayBolts()
{
	cout << "Array Of  Bolts: ";
	for (int i = 0; i < SIZE; i++)
	{
		cout << arrayOfBolts[i] << " ";
	}
	cout << endl;
}

void BoltsAndScrews::DisplayScrews()
{
	cout << "Array Of Screws: ";
	for (int i = 0; i < SIZE; i++)
	{
		cout << arrayOfScrews[i] << " ";
	}
	cout << endl;
}


void BoltsAndScrews::DisplayArrayOfPairs()
{
	cout << "Array Of Pairs: " << endl;

	for (int j = 0; j < 5; j++)
	{
		cout << newArrayOfBolts[j] << " ";
	}

	cout << endl;

	for (int i = 0; i < 5; i++)
	{
		cout << newArrayOfScrews[i] << " ";
	}
	cout << endl;


}
void BoltsAndScrews::addBolt(int x)
{
	arrayOfBolts[numberOfBolts] = x;
	numberOfBolts++;
}

void BoltsAndScrews::addScrew(int x)
{
	arrayOfScrews[numberOfScrews] = x;
	numberOfScrews++;
}

void BoltsAndScrews::fillOut2Darray(int x, int y)
{


	int bolt = x;
	int screw = y;

	newArrayOfBolts[counter1] = bolt;
	newArrayOfScrews[counter2] = screw;

	counter1++;
	counter2++;

	cout << "FillOutThing - " << bolt << " " << screw << endl << endl;

	return;

}

void BoltsAndScrews::Sort()
{
	

	int index = 0;
	int count1 = 0, count2 = 0;;
	
	do
	{
		
		for (int i = 0; i < SIZE; i++)
		{
			if (newArrayOfBolts[i] >= newArrayOfScrews[i])
			{
				cout << newArrayOfBolts[i] << " = " << newArrayOfScrews[i] << endl;
				
				BoltsByMax[count1] = newArrayOfBolts[i];
				ScrewsByMax[count2] = newArrayOfScrews[i];
				index = i;
			}

		}



		count1++;
		count2++;
		index++;

		cout << endl << "Bolts By Max: ";
		for (int i = 0; i < SIZE; i++)
		{
			cout << BoltsByMax[i];
		}

		cout << endl << "Screws By Max: ";
		for (int i = 0; i < SIZE; i++)
		{
			cout << ScrewsByMax[i];
		}

	} while (index > SIZE);
		
	
		
}

void BoltsAndScrews::findPairs()
{

	for (int i = 0; i < SIZE; i++) //pick fist bolt
	{
		for (int j = 0; j < SIZE; j++) //pick the first scew and compaire it to bolt below. If not math, pick next screw and so on
		{
			if (arrayOfBolts[i] < arrayOfScrews[j])
			{
				cout << "Condition: Screw will go in the bolt." << " Bolt: [" << arrayOfBolts[i] << "] less than Screw: [" << arrayOfScrews[j] << "]" << endl;
			}

			if (arrayOfBolts[i] == arrayOfScrews[j])
			{
				cout << endl << "Condition: Screw will fit bolt exactly." << " Bolt: [" << arrayOfBolts[i] << "] same as Screw: [" << arrayOfScrews[j] << "]" << endl << endl;

				cout << endl << "bolt " << arrayOfBolts[i];
				cout << endl << "screw " << arrayOfScrews[j] << endl << endl;;

				newArrayOfBolts[counter1] = arrayOfBolts[i];
				newArrayOfScrews[counter2] = arrayOfScrews[j];
				counter1++;
				counter2++;

				/*fillOut2Darray(arrayOfBolts[i], arrayOfScrews[j]);*/

			}

			if (arrayOfBolts[i] > arrayOfScrews[j])
			{
				cout << "Condition: Screw will be loose." << " Bolt: [" << arrayOfBolts[i] << "] bigger than Screw: [" << arrayOfScrews[j] << "]" << endl;
			}


		} // Screw

	} // bolt

}
Собственно интересующая меня функиция - Sort()