Olá, Jocy, normalmente fazemos isso com a ajuda do LINQ (Consultas Integradas à Linguagem) utilizando o método Sort:
https://dotnetfiddle.net/hWTQXP
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
var numeros = new List<int> {3, 9, 5, 2, 8};
numeros.Sort();
foreach(var n in numeros)
{
Console.WriteLine(n);
}
}
}
Mas quando estamos aprendendo algoritmos, é importante entender o processo "manual" de ordenação. Existem várias técnicas, e uma delas é chamada de bubble sort (ordenação por bolha, pois os números mais altos vão "descendo" e os menores vão "subindo", como aquelas bolhas que são mais leves e por isso vão subindo num copo de refrigerante).
https://code.msdn.microsoft.com/windowsdesktop/Bubble-Sort-C-8d3aec6f
Para ver esse código rodando, entre em:
https://dotnetfiddle.net/YZRQZ6
using System;
public class Program
{
public static void Main()
{
int[] numbers = { 45, 81, 29, 66, 03, 52, 51, 55, 74 };
Console.WriteLine("Example Bubble Sort");
bubbleSort(numbers, numbers.Length);
for (int i = 0; i < numbers.Length; i++)
Console.WriteLine(numbers[i]);
Console.ReadLine();
}
static void bubbleSort(int[] arr, int length)
{
int repos = 0;
/*Irá percorrer o vetor, comparando cada elemento do vetor com o elemento
* imediatamente seguinte (arr[j] = arr[j + 1];)
* O numero maximo de execuções do trecho do algoritmo
* p/ que o vetor fique ordenado é de N - 1, onde N é o numero de vezes.*/
/* Will go through the vector, comparing each element of the array with the element
* immediately following (arr[j] = arr[j + 1];)
* The maximum number of implementation of the algorithm for the vector section be
* ordained is N - 1, where N is the number of times.
*/
// i determina o número de etapas para a ordenação
// i determines the number of steps for sorting
for (int i = 0; i < length - 1; i++)
{
// j determina o numero de comparações em cada etapa e os indices a serem
//pesquisados para a comparação.
// j determines the number of comparisons in each step and the indices to be
// studied for comparison
for (int j = 0; j < length - (i + 1); j++)
{
if (arr[j] > arr[j + 1])
{
repos = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = repos;
}
}
}
}
}
Existem outras implementação de bubble sort que utilizam recursividade, mas essa acima é mais simples.