比較兩個相鄰的數的大小,每次比較完後把最大的數放到本輪的末尾。假設有數組: 258,445,131,97,22,36,17,38,28,28,第一輪:258和445比較,位置不用交換。第二輪:445和131比較,445比131大,那麼445在後,131在前,以此類推,第一輪 結果為:258,131,97,22,36,17,38,28,50,445,經過第一輪比較,最大的元素跑到了最後一個,所以第二輪比較,最後一個元素不需要進行比較了。第二輪還是從索引0和1開始比較,只是不許要比較最後一個了,算法還是一樣的。第三輪、第四輪以此類推。
public class Program
{
static List<int> list = new List<int>() { 258,445,131,97,22,36,17,38,28,50 };
static void Main(string[] args)
{
int temp;
for (int i = list.Count; i > 0; i--)
{
for (int j = 0; j < i - 1; j++)
{
if (list[j] > list[j + 1])
{
temp = list[j];
list[j] = list[j + 1];
list[j + 1] = temp;
}
}
printlist();
}
Console.ReadLine();
}
static void printlist()
{
foreach( var s in list)
{
Console.Write(string.Format("{0} ",s));
}
Console.WriteLine();
}
}
