zoukankan      html  css  js  c++  java
  • C#.NET实现经典排序算法

    1、选择排序

    class SelectionSorter    
    {    
        
    private int min;    
        
    public void Sort(int[] arr)    
        {    
            
    for (int i = 0; i < arr.Length - 1++i)    
            {    
                min 
    = i;    
                
    for (int j = i + 1; j < arr.Length; ++j)    
                {    
                    
    if (arr[j] < arr[min])    
                        min 
    = j;    
                }    
                
    int t = arr[min];    
                arr[min] 
    = arr[i];    
                arr[i] 
    = t;    
            }    
        }    
        
    static void Main(string[] args)    
        {    
            
    int[] array = new int[] { 1536105592871234753347 };    
            SelectionSorter s 
    = new SelectionSorter();    
            s.Sort(array);    
            
    foreach (int m in array)    
                Console.WriteLine(
    "{0}", m);    
        }    


    2、冒泡排序


    class EbullitionSorter    
    {    
        
    public void Sort(int[] arr)    
        {    
            
    int i, j, temp;    
            
    bool done = false;    
            j 
    = 1;    
            
    while ((j < arr.Length) && (!done))//判断长度    
            {    
                done 
    = true;    
                
    for (i = 0; i < arr.Length - j; i++)    
                {    
                    
    if (arr[i] > arr[i + 1])    
                    {    
                        done 
    = false;    
                        temp 
    = arr[i];    
                        arr[i] 
    = arr[i + 1];//交换数据    
                        arr[i + 1= temp;    
                    }    
                }    
                j
    ++;    
            }    
        }    
       
        
    static void Main(string[] args)    
        {    
            
    int[] array = new int[] { 1536105592871234753347 };    
            EbullitionSorter e 
    = new EbullitionSorter ();    
            e.Sort(array);    
            
    foreach (int m in array)    
                Console.WriteLine(
    "{0}", m);    
       
        }    


    3、快速排序


    class QuickSorter    
    {    
        
    private void swap(ref int l, ref int r)    
        {    
            
    int temp;    
            temp 
    = l;    
            l 
    = r;    
            r 
    = temp;    
        }    
        
    public void Sort(int[] list, int low, int high)    
        {    
            
    int pivot;//存储分支点    
            int l, r;    
            
    int mid;    
            
    if (high <= low)    
                
    return;    
            
    else if (high == low + 1)    
            {    
                
    if (list[low] > list[high])    
                    swap(
    ref list[low], ref list[high]);    
                
    return;    
            }    
            mid 
    = (low + high) >> 1;    
            pivot 
    = list[mid];    
            swap(
    ref list[low], ref list[mid]);    
            l 
    = low + 1;    
            r 
    = high;    
            
    do   
            {    
            
    while (l <= r && list[l] < pivot)    
                l
    ++;    
            
    while (list[r] >= pivot)    
                r
    --;    
                
    if (l < r)    
                    swap(
    ref list[l], ref list[r]);    
            } 
    while (l < r);    
            list[low] 
    = list[r];    
            list[r] 
    = pivot;    
            
    if (low + 1 < r)    
                Sort(list, low, r 
    - 1);    
            
    if (r + 1 < high)    
                Sort(list, r 
    + 1, high);    
        }    
       
        
    static void Main(string[] args)    
        {    
            
    int[] iArrary = new int[] { 1536105592871234753347 };    
            QuickSorter q 
    = new QuickSorter();    
            q.Sort(iArrary, 
    013);    
            
    for (int m = 0; m <= 13; m++)    
                Console.WriteLine(
    "{0}", iArrary[m]);    
        }    
    }    


    4、插入排序


    public class InsertionSorter    
    {    
        
    public void Sort(int[] arr)    
        {    
            
    for (int i = 1; i < arr.Length; i++)    
            {    
                
    int t = arr[i];    
                
    int j = i;    
                
    while ((j > 0&& (arr[j - 1> t))    
                {    
                    arr[j] 
    = arr[j - 1];//交换顺序    
                    --j;    
                }    
                arr[j] 
    = t;    
            }    
        }    
        
    static void Main(string[] args)    
        {    
            
    int[] array = new int[] { 1536105592871234753347 };    
            InsertionSorter i 
    = new InsertionSorter();    
            i.Sort(array);    
            
    foreach (int m in array)    
                Console.WriteLine(
    "{0}", m);     
        }    
    }    


    5、希尔排序 


    public class ShellSorter    
    {    
        
    public void Sort(int[] arr)    
        {    
            
    int inc;    
            
    for (inc = 1; inc <= arr.Length / 9; inc = 3 * inc + 1) ;    
            
    for (; inc > 0; inc /= 3)    
            {    
                
    for (int i = inc + 1; i <= arr.Length; i += inc)    
                {    
                    
    int t = arr[i - 1];    
                    
    int j = i;    
                    
    while ((j > inc) && (arr[j - inc - 1> t))    
                    {    
                        arr[j 
    - 1= arr[j - inc - 1];//交换数据    
                        j -= inc;    
                    }    
                    arr[j 
    - 1= t;    
                }    
            }    
        }    
       
        
    static void Main(string[] args)    
        {    
            
    int[] array = new int[] { 1536105592871234753347 };    
            ShellSorter s 
    = new ShellSorter();    
            s.Sort(array);    
            
    foreach (int m in array)    
                Console.WriteLine(
    "{0}", m);     
        }    
    }
  • 相关阅读:
    yzm10铺瓷砖 yzm10原创系列
    如何统计博客园的个人博客访问量
    Hybrid设计--账号体系的建设
    Hybrid设计--核心交互
    Hybrid设计--H5和Native,收口
    MySQL数据类型--与MySQL零距离接触 3-2 外键约束的要求解析
    MySQL数据类型--与MySQL零距离接触2-14MySQL默认约束
    css3径向渐变
    MySQL数据类型--与MySQL零距离接触2-13MySQL唯一约束
    MySQL数据类型--与MySQL零距离接触2-12主键约束
  • 原文地址:https://www.cnblogs.com/lds85930/p/1453381.html
Copyright © 2011-2022 走看看