比較兩個相鄰的數的大小,每次比較完後把最大的數放到本輪的末尾。假設有數組: 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(); } }