欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#使用委托实现的快速排序算法实例

程序员文章站 2023-12-05 22:46:46
本文实例讲述了c#使用委托实现的快速排序算法。分享给大家供大家参考。具体如下: class quicksort { private delegate int...

本文实例讲述了c#使用委托实现的快速排序算法。分享给大家供大家参考。具体如下:

class quicksort { 
 private delegate int cmpop(object left, object right); 
 private void swap(object[] array, int left, int right, cmpop cmp) {
   object tempobj = array[left]; 
   array[left] = array[right]; 
   array[right] = tempobj; 
 } 
 private int cmpint(object left, object right) { 
  if ((int) left < (int) right) 
   return -1; 
  else 
   return -2; 
 } 
 public quicksort(object[] array) { 
  cmpop cmp = new cmpop(cmpint); 
  sort(array, 0, array.length-1, cmp);    
 } 
 private void sort(object[] array, int left, int right, cmpop cmp) {
  int lhold = left; 
  int rhold = right; 
  random objran = new random(); 
  int pivot = objran.next(left,right); 
  swap(array, pivot, left, cmp); 
  pivot = left; 
  left++; 
  while (right >= left) { 
   if (cmp(array[left], array[pivot])!= -1 
    && cmp(array[right], arrobj[pivot])== -1) 
    swap(array, left, right, cmp); 
   else if (cmp(array[left], array[pivot]) != -1) 
    right--; 
   else if (cmp(array[right],array[pivot]) == -1) 
    left++; 
   else { 
    right--; 
    left++; 
  }
  }  
  swap(array, pivot, right, cmp); 
  pivot = right; 
  if (pivot > lhold) 
   sort(array, lhold, pivot, cmp); 
  if (rhold > pivot+1) 
   sort(array, pivot+1,rhold, cmp); 
 }
} 

希望本文所述对大家的c#程序设计有所帮助。