程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#幾種排序算法

C#幾種排序算法

編輯:關於C語言
本文介紹了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(low<high && arr[high]>=pivot) 
                --high; 
            //將比中心軸記錄小的移到低端 
            Swap(ref arr[high],ref arr[low]); 
                while(low<high && 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(); 
        } 
    } 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved