void quickSort(elementType*arr,int left,int right) { int temp , i = left, j = right; int pivot = arr[(left + right)/2]; while (i <= j) { while (arr[i] < pivot) { i++; } while (arr[j] > pivot) { j--; } if (i <= j) { swap(arr[i], arr
时间: 2023-07-15 11:13:33 浏览: 192
C/C++实现双路快速排序算法原理
[j]); i++; j--; } } if (left < j) { quickSort(arr, left, j); } if (i < right) { quickSort(arr, i, right); } }
这是一个快速排序的实现代码。快速排序是一种高效的排序算法,原理是选取一个基准值,把数组分成两部分,一部分小于基准值,一部分大于基准值,然后对这两部分递归地进行快速排序。
具体实现中,我们首先选取一个基准值,通常是数组中间的元素。然后定义两个指针 i 和 j,分别从数组左右两端开始向中间移动。i 指针从左向右移动,如果找到一个大于等于基准值的元素,就停止;j 指针从右向左移动,如果找到一个小于等于基准值的元素,就停止。如果 i 和 j 指针都停止了,就交换它们所指向的元素,并且 i 和 j 分别向后和向前移动一位。这个过程一直进行到 i > j,此时我们就把数组分成了两部分,左边部分全部小于基准值,右边部分全部大于基准值。然后对这两部分递归地进行快速排序,直到每个小部分只剩下一个元素,排序结束。
快速排序的时间复杂度为 O(nlogn),空间复杂度为 O(logn)。
阅读全文