Вы уже просматриваете список и читаете каждое значение, поэтому все, что вам нужно сделать, это проверить, больше ли существующее значение, чем то, которое вы вставляете. Если да, вставьте его перед проверенным элементом.
var inserted = false;
while (i < lstNumbers.Items.Count)//loops though whole list
{
if (numberToInput == Convert.ToInt32(lstNumbers.Items[i]))//checks that number doesnt already exist in list
{
numberToInput = (rnd.Next(0, 101));//genrate new random number
i = 0;//set to 0 to restart checking through the list
}
else if (numberToInput < Convert.ToInt32(lstNumbers.Items[i])
{
lstNumbers.Items.Insert(i - 1, numberToInput);//insert the number
inserted = true;
}
else//if the number isnt at i index
{
i++;//move onto next number
}
}
if (!inserted)
{
lstNumbers.Items.Insert(i - 1, numberToInput);//insert the number
}
Обратите внимание на проверку того, когда новый элемент должен идти в конце списка.
Я думаю, это то, чего хочет ваш учитель, и важно понимать, как работать с массивами, но на самом деле лучший способ сортировки списка в C # - это не использовать массив, а List или другой класс, который имеет свой собственный метод сортировки.
var myList = new List<int>();
myList.Add(5);
myList.Add(3);
myList.Add(1);
myList.Sort();
Это было бы быстрее и эффективнее, если бы у вас было миллион предметов, и это работало бы для строк, дат или чего-то еще.
List
также имеет метод Contains
и несколько других ярлыков, облегчающих жизнь. @ThePerplexedOne прав в том, что при сортировке после заполнения списка вы можете использовать SortedList , который автоматически вставит элементы в нужное место.