21xrx.com
2024-05-20 17:56:02 Monday
登录
文章检索 我的文章 写文章
C++快速排序代码
2023-07-04 22:28:06 深夜i     --     --
C++ 快速排序 代码

快速排序是常用的排序算法之一,它的时间复杂度为O(NlogN),具有极高的效率。下面给出C++的快速排序代码实现。

代码如下:


#include <iostream>

using namespace std;

void quicksort(int arr[], int left, int right) {

 if (left >= right) return;

 int pivot = arr[(left + right) / 2];

 int i = left - 1, j = right + 1;

 while (true) {

  do i++; while (arr[i] < pivot);

  do j--; while (arr[j] > pivot);

  if (i >= j) break;

  swap(arr[i], arr[j]);

 }

 quicksort(arr, left, j);

 quicksort(arr, j + 1, right);

}

int main() {

 int arr[] = 4;

 int n = sizeof(arr) / sizeof(arr[0]);

 quicksort(arr, 0, n - 1);

 for (int i = 0; i < n; i++) {

  cout << arr[i] << " ";

 }

 return 0;

}

这是一个递归实现的快速排序代码。它的基本思路是先选定一个轴元素(pivot),然后按照轴元素的大小将数组分为两个部分。然后分别对这两个部分进行递归处理,最终得到一个有序的数组。

在代码实现中,我们选取轴元素的方法是选取数组的中间元素(即arr[(left + right) / 2])。然后我们维护两个指针i和j。i从left开始往右扫描,找到第一个大于等于轴元素的数;j从right开始往左扫描,找到第一个小于等于轴元素的数。然后将这两个数交换。最终将数组分为两个部分,左边的部分都小于等于轴元素,右边的部分都大于等于轴元素。然后递归地对这两个部分进行排序。

代码中的quicksort函数就是递归地进行快速排序的实现。它的参数有三个:要排序的数组,左边界left,右边界right。递归的结束条件是left >= right,因为这时就只剩下一个元素了,不需要再排序了。

快速排序是一种非常高效的排序算法,它的时间复杂度为O(NlogN),空间复杂度为O(logN)。在实际的使用中,快速排序的效率非常高,它是大多数排序算法中最快的之一。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复