现在的位置: 首页 > 综合 > 正文

排序算法

2013年10月27日 ⁄ 综合 ⁄ 共 3537字 ⁄ 字号 评论关闭

//选择排序   
 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[] { 1  5  3  6  10  55  9  2  87  12  34  75  33  47 }    
         selectionsorter s = new selectionsorter()    
         s.sort(array)    
         foreach (int m in array)   
             console.writeline(" {0}"   m)    
     }   
 }   
 //冒泡排序   
 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[] { 1  5  3  6  10  55  9  2  87  12  34  75  33  47 }    
         ebullitionsorter e = new ebullitionsorter ()    
         e.sort(array)    
         foreach (int m in array)   
             console.writeline(" {0}"   m)    

     }   
 }   
 //快速排序   
 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[] { 1  5  3  6  10  55  9  2  87  12  34  75  33  47 }    
         quicksorter q = new quicksorter()    
         q.sort(iarrary  0  13)    
         for (int m = 0  m < = 13  m++)   
             console.writeline(" {0}"   iarrary[m])    
     }   
 }   
 //插入排序   
 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[] { 1  5  3  6  10  55  9  2  87  12  34  75  33  47 }    
         insertionsorter i = new insertionsorter()    
         i.sort(array)    
         foreach (int m in array)   
             console.writeline(" {0}"   m)     
     }   
 }   
 //希尔排序   
 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[] { 1  5  3  6  10  55  9  2  87  12  34  75  33  47 }    
         shellsorter s = new shellsorter()    
         s.sort(array)    
         foreach (int m in array)   
             console.writeline(" {0}"   m)     

     }   
 } 

抱歉!评论已关闭.