当前位置: 首页 > wzjs >正文

网站建设w亿玛酷1流量订制渠道推广

网站建设w亿玛酷1流量订制,渠道推广,纺织品公司网站建设,做的网站如何防止怕爬虫文章目录 概要代码输出分析优缺点 概要 快速排序(Quick Sort): 是一种非常高效的排序算法,基于分治法(Divide and Conquer)的思想。它的基本思想是通过一个"基准"元素(pivot&#xf…

文章目录

    • 概要
    • 代码
    • 输出
    • 分析
    • 优缺点

概要

快速排序(Quick Sort): 是一种非常高效的排序算法,基于分治法(Divide and Conquer)的思想。它的基本思想是通过一个"基准"元素(pivot)将数组分成两部分,其中一部分所有元素都比基准小,另一部分所有元素都比基准大,然后递归地对这两部分继续进行排序。

在这里插入图片描述

代码

#include <stdio.h>// 交换两个元素的值
void swap(int* a, int* b) {int temp = *a;*a = *b;*b = temp;
}// 分区函数,返回分区点的索引
int partition(int arr[], int low, int high) {int pivot = arr[high];  // 选择最后一个元素作为基准int i = (low - 1);  // i是较小元素的索引for (int j = low; j <= high - 1; j++) {// 如果当前元素小于或等于基准if (arr[j] <= pivot) {i++;  // 增加较小元素的索引swap(&arr[i], &arr[j]);}}swap(&arr[i + 1], &arr[high]);  // 将基准元素放到正确的位置return (i + 1);
}// 快速排序的递归函数
void quickSort(int arr[], int low, int high) {if (low < high) {// pi是分区点索引,arr[pi]已经排好序int pi = partition(arr, low, high);// 递归排序分区点左边的子数组quickSort(arr, low, pi - 1);// 递归排序分区点右边的子数组quickSort(arr, pi + 1, high);}
}// 打印数组的函数
void printArray(int arr[], int size) {for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}printf("\n");
}// 主函数
int main() {int arr[] = {10, 7, 8, 9, 1, 5};int n = sizeof(arr) / sizeof(arr[0]);printf("排序前的数组: \n");printArray(arr, n);quickSort(arr, 0, n - 1);printf("排序后的数组: \n");printArray(arr, n);return 0;
}

输出

排序前的数组: 
10 7 8 9 1 5 
排序后的数组: 
1 5 7 8 9 10 

分析

针对数组【10,7,8,9,1,5】做快速排序解析,解析如下:

核心规则:选基准(第一个或者最后一个或者随机)、分区(尽量均衡)、递归。

快速排序的基本思想:

  • 选择一个基准元素(pivot)。
  • 将数组分为两部分:一部分比基准元素小,另一部分比基准元素大。
  • 递归地对这两部分进行快速排序。
  1. 第一次选择基准5(最后一个元素):

分区后数组变为[1,5,8,9,10,7]。此时基准5在位置1,左边是[1],右边是[8,9,10,7]。

  1. 对右边子数组[8,9,10,7]进行快速排序:

基准是7(最后一个元素)。分区后,所有元素都大于7,所以交换基准和第一个元素的位置,得到[7,9,10,8].
基准7在位置0,右边是[9,10,8].

  1. 对右边子数组[9,10,8]排序:

基准是8。分区后,所有元素都大于8,交换后得到[8,10,9]. 基准在位置0,右边是[10,9].

  1. 对右边子数组[10,9]排序:

基准是9。分区后,交换得到[9,10]. 基准在位置0,右边是[10].

此时右边的所有子数组处理完毕,合并后整个数组为[1,5,7,8,9,10].

优缺点

优点:

  • 原地排序,空间复杂度 O(log n)。
  • 适合大规模数据,实际运行速度快,常数因子小。

缺点:

  • 不稳定排序,在特定情况下(如数据已经有序或逆序)可能会表现不佳。
  • 对基准元素选择敏感。
  • 递归调用栈可能导致栈溢出。

平均时间复杂度为O(nlog2n),最好的情况下是 O(nlog2n),不稳定排序。

平均时间复杂度最好情况最坏情况空间复杂度
O(nlog2n)O(nlog2n)O(n²)O(1)
http://www.dtcms.com/wzjs/161297.html

相关文章:

  • 石家庄做手机网站建设泽成杭州seo网站推广排名
  • 做鞋子出口需要作网站吗适合企业员工培训的课程
  • 电商平台收费标准seo查询工具有哪些
  • 机械网站建设注意什么搜索引擎营销的手段包括
  • 做网站具备的条件小红书关键词搜索量查询
  • 网站开发代理合同网站设计公司怎么样
  • 全面的vi设计公司品牌seo培训
  • wordpress建设中seo岗位工作内容
  • 北京做网站的网络公司百度第三季度财报2022
  • 网站如何做百度才会收录长沙网站公司品牌
  • 品牌定位 品牌上海抖音seo公司
  • 上海网站建设定制公微博关键词排名优化
  • 湖南长沙天气seo排名点击 seo查询
  • 编程 朋友 做网站百度竞价点击价格
  • 合肥市建设工程造价信息网站推广哪个网站好
  • 文山微网站建设站长工具免费
  • 武汉关键词排名提升搜索引擎优化趋势
  • 网页游戏网站开发人工智能培训机构排名
  • 切实加强政府门户网站建设网络seo是什么意思
  • 手机app开发网站模板资源优化网站排名
  • 长春精神文明建设网站百度商业账号登录
  • 冀州网站制作公众号关键词排名优化
  • 大型网站 div百度网盘app官网下载
  • 创个网站怎么弄全网搜索
  • 人才招聘网站建设方案深圳推广不动产可视化查询
  • 商城类网站如何众筹品牌推广经典案例
  • 天津市建设工程交易管理网站东营网站建设制作
  • wordpress 做大型网站吗google play官网
  • 厦门 微网站制作百度推广账户优化方案
  • 昆山做网站多少钱湖南seo优化排名