public void BucketSort() { auxCollection = new Droid[highestValue]; for (int i = 0; i < highestValue; i++) { auxCollection[i] = DCollection[i]; } // push droids onto the appropriate stack foreach (Droid droid in auxCollection) { if (droid.Model == "Astromech") { astromechStack.Push(droid); } if (droid.Model == "Janitor") { janitorialStack.Push(droid); } if (droid.Model == "Utility") { utilityStack.Push(droid); } if (droid.Model == "Protocol") { protocolStack.Push(droid); } } while (astromechStack.size() != 0) { genericQueue.Endqueue(astromechStack.Pop()); } while (janitorialStack.size() != 0) { genericQueue.Endqueue(janitorialStack.Pop()); } while (utilityStack.size() != 0) { genericQueue.Endqueue(utilityStack.Pop()); } while (protocolStack.size() != 0) { genericQueue.Endqueue(protocolStack.Pop()); } BSI = 0; // dequeue all the droids back into the original DCollection array while (genericQueue.size() != 0) { DCollection[BSI] = genericQueue.queue(); BSI++; } }