• 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);
            }
        }
    }
  • 相关阅读:
    [转]initrd.img, vmlinux
    [转]关于arm 上kernel, qemu起VM等
    [转]overlayFS
    [转]virtiofs
    [转] dynamic DMA mapping
    [转] cpu亲和性
    [转] /dev/shm
    huginn,n8n,ifttt
    ipfs---protocol, filesystem,web p2p,cdn
    gpg,pgp--
  • 原文地址:https://www.cnblogs.com/May-day/p/6367868.html
Copyright © 2020-2023  润新知