算法1:快速排序

part1:思维导图展示

part2:快速排序作用

  • 输入:乱序数组

  • 输出:有序数组

  • 判别:

    • 条件1:排序算法
    • 条件2:选中其中某一值
    • 条件3:左右比较交换
    • 条件4:分治法解决左右问题
  • 联结:

    • 算法
      • 时间复杂度:平均:O(nlogn),最好的情况是每次都进行均分,最坏的情况是每次都选择左右,这时会退化成为链表
      • 空间复杂度:O(nlogn),分析:递归深度为logn,每次需要访问n个。
      • 稳定性:不稳定,因为选择的参考数据不一样,会导致排序的过程不一样。
  • 步骤

    • 核心步骤
      1,选取中间值
      2,在左侧找到比中间值大的
      3,在右侧找到比中间值小的
      4,交换二者
      5,直到二者最后都到中间的位置,退出
      6,对左侧部分重复该操作
      7,对右侧部分重复该操作

part3:快速排序模板

void quick_sort(int arr[],int l, int r) { if(l>=r) return; int i = l - 1; int j = r + 1; int x = arr[l+r>>1]; while(i<j) { do i++; while(arr[i]<x) do j--; while(arr[j]>x) if(i<j) swap(arr[i],arr[j]); } //这里用i 或者是用j 都是一样的,都可以实现快速排序。 quick_sort(arr,l,j); quick_sort(arr,j+1,r); }

实例部分

日后补充

posted @ 2025-04-25 23:24  启故  阅读(13)  评论(0)    收藏  举报