標籤:each 位置 key return style oid names eth []
一,冒泡排序法理解:就是將一個集合裡的資料當前位置和後一位比較,然當前位置大於後一位,則兩個位置替換,直到排序完成
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace MaoPao{ class Program { static void Sort(int[] sArray) { bool sw = true; do { sw = false; for (int i = 0; i < sArray.Length - 1; i++) { if (sArray[i] > sArray[i + 1]) { int temp = sArray[i]; sArray[i] = sArray[i + 1]; sArray[i + 1] = temp; sw = true; } } } while (sw); } static void Main(string[] args) { int[] sArray = new int[] { 88, 73, 22, 1, 445, 53, 63, 5 }; Sort(sArray); foreach (var temp in sArray) { Console.Write(temp + " "); } Console.ReadKey(); } }}
二,冒泡排序拓展
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace MaoPao{ class Program { static void CommonSort<T>(T[] sArray, Func<T, T, bool> compareMethod) { bool sw = true; do { sw = false; for (int i = 0; i < sArray.Length - 1; i++) { if (compareMethod(sArray[i], sArray[i + 1])) { T temp = sArray[i]; sArray[i] = sArray[i + 1]; sArray[i + 1] = temp; sw = true; } } } while (sw); } static void Main(string[] args) { Employee[] employees = new Employee[] { new Employee("張三",12), new Employee("李四",234), new Employee("陳五",14), new Employee("李六",234), new Employee("王七",90) }; CommonSort<Employee>(employees, Employee.Compare); foreach (Employee em in employees) { Console.WriteLine(em); } Console.ReadKey(); } }}
類
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace MaoPao{ class Employee { public string Name { get; private set; } public int Comp { get; private set; } public Employee(string name, int comp) { this.Name = name; this.Comp = comp; } //如果e1大於e2的話,返回true,否則返回false public static bool Compare(Employee e1, Employee e2) { if (e1.Comp > e2.Comp) return true; return false; } public override string ToString() { return Name + ":" + Comp; } }}
C#冒泡排序法學習