依頼の1つの応用---泡が立つ

8646 ワード

参考『C#アドバンスドプログラミング』
直接コードをつけて、コードは比較的に簡単です
 1     class Program

 2     {

 3         private delegate string GetAString();

 4         static void Main(string[] args)

 5         {

 6             

 7             int[] a = { 0, 5, 6, 2, 1 };

 8             BubbleSorter.Sort(a, BubbleSorter.Compa);

 9             foreach (var item in a)

10             {

11                 Console.Write(item);

12             }

13             Console.ReadLine();

14         }

15 

16         public static void SortA(int[] sortArray)

17         {

18             bool swapped = true;

19             do

20             {

21                 swapped = false;

22                 for (int i = 0; i < sortArray.Length - 1; i++)

23                 {

24                     if (sortArray[i] < sortArray[i + 1])

25                     {

26                         int temp = sortArray[i];

27                         sortArray[i] = sortArray[i + 1];

28                         sortArray[i + 1] = temp;

29                         swapped = true;

30                     }

31                 }

32             }

33             while (swapped);

34         }

35     }

36 

37     class BubbleSorter

38     {

39         static public void Sort<T>(IList<T> sortArray, Func<T, T, bool> comparison)

40         {

41             bool swapped = true;

42             do

43             {

44                 swapped = false;

45                 for (int i = 0; i < sortArray.Count - 1; i++)

46                 {

47                     if (comparison(sortArray[i + 1], sortArray[i]))

48                     {

49                         T temp = sortArray[i];

50                         sortArray[i] = sortArray[i + 1];

51                         sortArray[i + 1] = temp;

52                         swapped = true;

53                     }

54                 }

55             } while (swapped);

56         }

57 

58         public static bool Compa(int i, int j)

59         {

60             return i < j;

61         }

62     }