2025年快排为什么打不准

快排算法实现快排的时间复杂度O(nlogn);不稳定算法


快排的实现方式多种多样,如下是其中的一种方法。

一般不会手撕快排:

C++直接调用sort() + lambda表达式就可实现排序;golang调用sort.Ints()或 sort.Slice()+lambda实现排序;C++实现


#include #include #include using namespace std;int partition(vector& arr, int low, int high) { int pivot = arr[high]; int i = low-1; for (int j = low; j < high; j++) { if (arr[j] <= pivot) { i++; swap(arr[j], arr[i]); } } swap(arr[i+1], arr[high]); return i+1;}void quickSort(vector& arr, int low, int high) { if (low < high) { int pivotIndex = partition(arr, low, high); quickSort(arr, low, pivotIndex-1); quickSort(arr, pivotIndex+1, high); }}int main() { vector arr = {3, 6, 8, 10, 1, 2, 1}; quickSort(arr, 0, arr.size() - 1); copy(arr.begin(), arr.end(), ostream_iterator(cout, ",")); cout << endl; return 0;}


golang实现


package mainimport "fmt"func partition(nums []int, low, high int) int {pivot := nums[high]i := low-1for j := low; j < high; j++ {if nums[j] <= pivot {i++nums[i], nums[j] = nums[j], nums[i]}}nums[i+1], nums[high] = nums[high], nums[i+1]return i+1}func quickSort(nums []int, low, high int) {if low < high {pivotIndex := partition(nums, low, high)quickSort(nums, low, pivotIndex-1)quickSort(nums, pivotIndex+1, high)}}func main() {nums := []int{3, 6, 8, 10, 1, 2, 1}quickSort(nums, 0, len(nums) - 1)for _, v := range nums {fmt.Printf("%d\t", v)}fmt.Println()}

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。