zoukankan      html  css  js  c++  java
  • 经典算法C#四种排序算法

    冒泡排序 

    using System; 
    
    namespace BubbleSorter 
    { 
        public class BubbleSorter 
        { 
            public void Sort(int [] list) 
            { 
                int i,j,temp; 
                bool done=false; 
                j=1while((j<list.Length)&&(!done)) 
                { 
                   done=truefor(i=0;i<list.Length-j;i++) 
                   { 
                        if(list[i]>list[i+1]) 
                        { 
                            done=false; 
                            temp=list[i]; 
                            list[i]=list[i+1]; 
                            list[i+1]=temp; 
                        } 
                    } 
                    j++; 
                } 
            } 
        } 
    
        public class MainClass 
        { 
            public static void Main() 
            { 
                int[] iArrary=new int[]{1,5,13,6,10,55,99,2,87,12,34,75,33,47}; 
    
                BubbleSorter sh=new BubbleSorter();
    
                sh.Sort(iArrary);
                forint m=0;m<iArrary.Length;m++) 
                {
                    Console.Write("{0} ",iArrary[m]);
                }
                Console.WriteLine(); 
            }
        } 
    } 

    选择排序 

    using System;
    
    namespace SelectionSorter
    {
        public class SelectionSorter
        {
            private int min;
            public void Sort(int[] list)
            {
                for (int i = 0; i < list.Length - 1; i++)
                {
                    min = i;
                    for (int j = i + 1; j < list.Length; j++)
                    {
                        if (list[j] < list[min])
                        {
                            min = j;
                        }
                    }
                    int t = list[min];
                    list[min] = list[i];
                    list[i] = t;
                }
            }
        }
    
        public class MainClass
        {
            public static void Main()
            {
                int[] iArrary = new int[] { 1, 5, 3, 6, 10, 55, 9, 2, 87, 12, 34, 75, 33, 47 };
                SelectionSorter ss = new SelectionSorter();
                ss.Sort(iArrary);
                for (int m = 0; m < iArrary.Length; m++)
                {
                    Console.Write("{0} ", iArrary[m]);
                }
                Console.WriteLine();
            }
        }
    }

    插入排序

    using System;
    
    namespace InsertionSorter
    {
        public class InsertionSorter
        {
            public void Sort(int[] list)
            {
                for (int i = 1; i < list.Length; i++)
                {
                    int t = list[i];
                    int j = i;
                    while ((j > 0) && (list[j - 1] > t))
                    {
                        list[j] = list[j - 1];
                        --j;
                    }
                    list[j] = t;
                }
            }
        }
    
        public class MainClass
        {
            public static void Main()
            {
                int[] iArrary = new int[] { 1, 13, 3, 6, 10, 55, 98, 2, 87, 12, 34, 75, 33, 47 };
                InsertionSorter ii = new InsertionSorter();
                ii.Sort(iArrary);
                for (int m = 0; m < iArrary.Length; m++)
                { 
                    Console.Write("{0}", iArrary[m]);
                }
                Console.WriteLine();
            }
        }
    }

    希尔排序 
     希尔排序是将组分段,进行插入排序. 

    using System;
    
    namespace ShellSorter
    {
        public class ShellSorter
        {
            public void Sort(int[] list)
            {
                int inc;
                for (inc = 1; inc <= list.Length / 9; inc = 3 * inc + 1) ;
                for (; inc > 0; inc /= 3)
                {
                    for (int i = inc + 1; i <= list.Length; i += inc)
                    {
                        int t = list[i - 1];
                        int j = i;
    
                        while ((j > inc) && (list[j - inc - 1] > t))
                        {
                            list[j - 1] = list[j - inc - 1];
                            j -= inc;
                        }
                        list[j - 1] = t;
                    }
                }
            }
        }
    
        public class MainClass
        {
            public static void Main()
            {
                int[] iArrary = new int[] { 1, 5, 13, 6, 10, 55, 99, 2, 87, 12, 34, 75, 33, 47 };
                ShellSorter sh = new ShellSorter();
                sh.Sort(iArrary);
                for (int m = 0; m < iArrary.Length; m++)
                { 
                    Console.Write("{0} ", iArrary[m]);
                }
                Console.WriteLine();
            }
        }
    }
  • 相关阅读:
    有关macOS隐藏文件的问题
    AcWing 2548. 大胖子走迷宫(BFS)
    AcWing 1224. 交换瓶子(交换最少次数使得数列有序)
    AcWing 1220. 生命之树(树形DP)
    AcWing 1215. 小朋友排队(树状数组)
    AcWing 1214. 波动数列(推柿子+DP)
    Python文件操作
    远程升级程序过程
    找某个Linux内核可能调用的文件
    linux platform简易的理解
  • 原文地址:https://www.cnblogs.com/masahiro/p/10131434.html
Copyright © 2011-2022 走看看