标签:
快速排序也是根据分治策略设计的一种高效率的分类算法。
首先回顾下分类算法的分类思想:它从待分类序列S中随机取出一个元素x,并把S分成三个子序列S1,S2和S3,分别是S中小于,等于和大于x的元素序列,而后对S1和S2递归使用本算法,就可以得到排好序的序列。实际操作中通常不分出序列S2,而是直接把S2中的元素归入S1和S3中。
1 int partition(int int_array[], int low, int high) 2 { 3 int first = low, last = high; 4 int key = int_array[first]; 5 6 while(first < last) 7 { 8 while(first < last && int_array[last] >= key) --last; 9 int_array[first] = int_array[last]; 10 while(first < last && int_array[first] <= key) first++; 11 int_array[last] = int_array[first]; 12 } 13 int_array[first] = key; 14 return first; 15 } 16 17 void my_quick_sort(int a[], int low, int high) 18 { 19 if(high > low) 20 { 21 int index = partition(a, low, high); 22 my_quick_sort(a, low, index-1); 23 my_quick_sort(a, index+1, high); 24 } 25 }
标签:
原文地址:http://www.cnblogs.com/david-wang/p/4340009.html