用C#编写的几种常用的排序方法

在网上看到很多经典排序方法,算法分:
1:插入排序 a.直接插入排序  b.希尔排序
2:交换排序 a.冒泡排序      b.快速排序
3:选择排序 a.直接选择排序
4:归并排序 a.归并排序
5:分配排序 a.箱排序        b.基数排序
本人常用的三种排序:1.直接选择排序 2.直接插入排序 3.冒泡排序;我用C#语言来讲解一下。
第一种:冒泡排序
 原理:对一个数列,我们将它进行轮循和交换,每次轮循出最大数或最小数放在对尾,依

次进行循环,轮循长度为-1。
public class EbullitionSorter
{
 public void Sort(int[] arr)
 {
  for(int i=arr.length-1;i>0;i--)
  {
   for(int j=0;j<i;j++)
   {
    if(arr[i]<arr[j])
    {
     int temp=arr[i];
     arr[i]=arr[j];
     arr[j]=temp;
    }
   }
  }
 }
}


第二种:选择排序
 原理:对一个数列,我们选出最大或最小的数,放在队尾,依次循环下去,循环长度为-1

;由于没有冒泡排序那每次都要比较,因此比冒泡排序要快。
public 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 temp=arr[min];
   arr[min]=arr[i];  
   arr[i]=temp;
  }
 }
}


第三种:插入排序
 原理:对一个数列,我们从第二个数开始,将它与它前面的数字进行比较,每次选出最大

或最小的数放在队首,因而形成一个有序的队列,所以它比选择排序更快。
public class InsertionSorter
{
 public void Sort(int[] arr)
 {
  for(int i=1;i<arr.length;i++)
  {
   int temp=arr[i]; 
   int j=i;
   while((j>0)&&(arr(j-1)>temp))
   {
    arr[j]=arr[j-1];
    --j;
   }
   arr[j]=temp;
  }
 }
}

以上的三种方法是我自己常用的,很简单,程序也很容易懂的,对初学者很有帮助。
很多人学过面向对象思想,下次就写下怎么对对象排序。
以上有错的地方请谅解!!

posted @ 2009-05-19 14:44  余锋  阅读(1039)  评论(0)    收藏  举报