快速排序基本思想:选取一个枢轴元素(图简单可选第一个),通过对序列一次遍历(中间涉及到数的交换),将该枢轴放置到序列合适位置,保证其左边数都比它小,右边数都比它大,然后利用递归思想对其左右两个子序列进行同样排序。
快熟排序的基本实现过程:将枢轴元素key备份,序列头尾各设置一个游标——i和j,尾部游标j先移动(如果选择的最后一个元素为枢轴则i先移),直到遇到比key小的元素,将其移到原枢轴处覆盖之,此时j处元素空着了,然后再对i进行移动,直到遇到比key大的元素,将其移到右边下表为j的空白处
void QuickSort (int left, int right, int *array) { if(left>=right) return ; int i=left, j=right; int key=array[i]; while (i<j) { while (i<j && array[j]>=key) j--; array[i] = array[j]; while (i<j && array[i]<=key) i++; array[j] = array[i]; } array[i] = key; QuickSort(left, i-1, array); QuickSort(i+1, right, array); }