C#使用委托实现的快速排序算法实例
程序员文章站
2024-02-08 20:37:22
本文实例讲述了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#程序设计有所帮助。