标签:pre turn code 快速 UI 递归 bre color 排序
快排也叫挖坊填补法
先选择一个标准值,将它取出,我们把它看做一个坑。
我们选择最低的一位作为标准值。
从后向前遍历,(高指针向低指针遍历)找到比这个标准值小的值就放入坑中,这时就产生了一个新的坑。
再从前向后遍历,(低指针向高指针遍历)找到比标准值大的值则放入坑中,这时产生了一个新的坑。
再从后向前遍历(高指针向低指针遍历)。。。。。
当高低指针相遇的时候,将标准值放入。这时标准值得左边都是比标准值小的,标准值得后面都是比标准值大的。
将左边,和右边看成独立数组,重复以上步骤。(递归实现)
代码:
int FindStandard(int *arr,int low,int high) { int num = arr[low]; while(low < high) { //从后向前找 while(low < high) { if(arr[high] < num) { arr[low] = arr[high]; break; } high--; } //从前向后找 while(low < high) { if(arr[low] > num) { arr[high] = arr[low]; break; } low++; } } arr[low] = num; return low; } void QuickSort(int* arr,int low, int high) { if(arr == NULL || low >= high) return; int Standard = FindStandard(arr,low,high); //以标准值为界限分为左半部分和右半部分,再分别重复以上步骤 QuickSort(arr,low,Standard-1); QuickSort(arr,Standard+1,high); }
从后向前遍历,(高指针向低指针遍历)找到比这个标准值小的值就放入坑中,这时就产生了一个新的坑。
再从填好的坑的下一位向后遍历,(低指针向高指针遍历)找到比标准值大的值则放入坑中,这时产生了一个新的坑。
再从填好的坑的前一位向前遍历。。。。。
当高低指针相遇的时候,将标准值放入。这时标准值得左边都是比标准值小的,标准值得后面都是比标准值大的。
标签:pre turn code 快速 UI 递归 bre color 排序
原文地址:https://www.cnblogs.com/Lune-Qiu/p/9104933.html