【 tulaoshi.com - 编程语言 】
                             
                            作者:Sabine 本文介绍了C#的四种排序算法:冒泡排序、选择排序、插入排序和希尔排序  
 冒泡排序 
using System; 
namespace BubbleSorter  
{ public class BubbleSorter  
{ public void Sort(int [] list)  
{ int i,j,temp;  
bool done=false;  
j=1;  
while((j<list.Length)&&(!done))  
{ done=true;  
for(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);  
for(int 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();  
} }  
}    
快速排序 
using System; 
using System.Collections.Generic; 
using System.Text; 
namespace SoloDataStructure 
{ 
    class MyQuickSort 
    { 
        /**//// summary 
        /// 快速排序算法 
        /// /summary 
        /// 快速排序为不稳定排序,时间复杂度O(nlog2n),为同数量级中最快的排序方法 
        /// param name="arr"划分的数组/param 
        /// param name="low"数组低端上标/param 
        /// param name="high"数组高端下标/param 
        /// returns/returns 
        static int Partition(int[] arr, int low, int high) 
        { 
            //进行一趟快速排序,返回中心轴记录位置 
           // arr[0] = arr[low]; 
            int pivot = arr[low];//把中心轴置于arr[0] 
            while (low  high) 
            { 
                while(lowhigh && arr[high]=pivot) 
                --high; 
            //将比中心轴记录小的移到低端 
            Swap(ref arr[high],ref arr[low]); 
                while(lowhigh && arr[low]=pivot) 
                ++low; 
            Swap(ref arr[high],ref arr[low]); 
           //将比中心轴记录大的移到高端 
            } 
            arr[low] = pivot; //中心轴移到正确位置 
            return low;  //返回中心轴位置 
        } 
        static void Swap(ref int i, ref int j) 
        { 
            int t; 
            t = i; 
            i = j; 
            j = t; 
        }  
        static void QuickSort(int[] arr,int low,int high) 
        { 
            if (low  high-1)//当 arr[low,high]为空或只一个记录无需排序 
            { 
                int pivot = Partition(arr,low,high); 
                QuickSort(arr,low,pivot-1); 
                QuickSort(arr,pivot+1,high); 
            } 
        } 
        static void Main(string[] args) 
        { 
            int[] arr=new int[]{54,62,99,14,28,1,8,77,99,3,110}; 
            QuickSort(arr, 0, arr.Length-1); 
            Console.Write("Data After QuickSort:"); 
            foreach (int i in arr) 
            { 
                Console.Write(i+","); 
            } 
            Console.ReadLine(); 
        } 
    } 
}