C#冒泡排序法学习

一,冒泡排序法理解:就是将一个集合里的数据当前位置和后一位比较,然当前位置大于后一位,则两个位置替换,直到排序完成

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;
        }
    }
}

 三,泛型的冒泡排序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace Maopao
{
    class Program
    {
        static void Main(string[] args)
        {
            People[] pl = new People[]{
                new People(3, "小明3"),
                new People(1, "小明1"),
                new People(2, "小明2"),
                new People(5, "小明5"),
                new People(4, "小明4"),
                new People(9, "小明9")
            };

            Sort s = new Sort();
            int[] t = { 4, 2, 3, 9, 5, 1, 8 };
            int[] t1 = s.CompareTo(t);
            People[] t3 = s.CompareSort<People>(pl);
            for (int i = 0; i < t1.Length; i++)
            {
                Console.WriteLine(t1[i].ToString());
            }

            //用泛型实现冒泡程序
            for (int i = 0; i < t3.Length; i++)
            {
                Console.WriteLine(t3[i].Name);
            }
            Console.ReadKey();
        }
    }
    public class Sort
    {
        public int[] CompareTo(int[] a)
        {
            int temp;
            for (int i = 0; i < a.Length - 1; i++)
            {
                for (int j = i + 1; j < a.Length; j++)
                {
                    if (a[i] > a[j])
                    {
                        temp = a[i];
                        a[i] = a[j];
                        a[j] = temp;
                    }
                }
            }
            return a;
        }

        public T[] CompareSort<T>(T[] t) where T : IComparable
        {
            T temp;
             for (int i = 0; i < t.Length - 1; i++)
            {
                for (int j = i + 1; j < t.Length; j++)
                {
                    if (t[i].CompareTo(t[j]) > 0)
                    {
                        temp = t[i];
                        t[i] = t[j];
                        t[j] = temp;
                    }
                }
            }
            return t;
        }
    }
    public class People : IComparable
    {
        public People(int id, string name)
        {
            this.Id = id;
            this.Name = name;
        }

        public int Id
        {
            set;
            get;
        }
        public string Name
        {
            get;
            set;
        }
        public int CompareTo(object obj)
        {
            People p = (People)obj;
            return this.Id.CompareTo(p.Id);
        }
    }
}
原文地址:https://www.cnblogs.com/May-day/p/6367868.html