源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C#几种排序算法

  • 时间:2022-09-04 07:49 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C#几种排序算法
作者: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(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();         }     } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部