C#实现所有经典排序算法

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);     
    }    
复制代码
posted @   浩克匠心  阅读(86)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示