public T[] CopySortedArray() { IndexedItem[] itemsNew = new IndexedItem[_size]; Array.Copy(_items, itemsNew, _size); for (int i = 0; i < _size - 1; i++) { for (int j = 0; j < _size - 1 - i; j++) { if (IsHigherPriority(j, j + 1)) { var temp = itemsNew[j]; itemsNew[j] = itemsNew[j + 1]; itemsNew[j + 1] = temp; } } } return(itemsNew.Select(x => x.Value).ToArray()); }