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

福田公司是国企吗搜索引擎优化搜索优化

福田公司是国企吗,搜索引擎优化搜索优化,马帮erp是干嘛的,网站的视频做gif文章目录 归并排序与快速排序的简单实现(C语言)一、归并排序实现核心思想关键特性C语言实现 二、快速排序实现核心思想关键特性C语言实现 三、算法对比分析 四、总结 归并排序与快速排序的简单实现(C语言) 一、归并排序实现 核心…

文章目录

    • 归并排序与快速排序的简单实现(C语言)
      • 一、归并排序实现
        • 核心思想
        • 关键特性
        • C语言实现
      • 二、快速排序实现
        • 核心思想
        • 关键特性
        • C语言实现
      • 三、算法对比分析
    • 四、总结

归并排序与快速排序的简单实现(C语言)

一、归并排序实现

核心思想

采用分治策略的三步走:

  1. 分解:递归将数组二分至单个元素
  2. 解决:单个元素自然有序
  3. 合并:有序子数组合并为完整数组
关键特性
  • 稳定排序(相等元素顺序不变)
  • 时间复杂度:O(n log n)
  • 空间复杂度:O(n)
C语言实现
#include <stdio.h>
#include <stdlib.h>// 合并两个有序子数组
void merge(int arr[], int left, int mid, int right) {int n1 = mid - left + 1;int n2 = right - mid;// 创建临时数组int *L = (int*)malloc(n1 * sizeof(int));int *R = (int*)malloc(n2 * sizeof(int));// 拷贝数据到临时数组for (int i = 0; i < n1; i++)L[i] = arr[left + i];for (int j = 0; j < n2; j++)R[j] = arr[mid + 1 + j];// 合并临时数组int i = 0, j = 0, k = left;while (i < n1 && j < n2) {if (L[i] <= R[j]) {arr[k++] = L[i++];} else {arr[k++] = R[j++];}}// 拷贝剩余元素while (i < n1) arr[k++] = L[i++];while (j < n2) arr[k++] = R[j++];free(L);free(R);
}// 递归排序函数
void mergeSort(int arr[], int left, int right) {if (left < right) {int mid = left + (right - left)/2;mergeSort(arr, left, mid);mergeSort(arr, mid+1, right);merge(arr, left, mid, right);}
}

二、快速排序实现

核心思想

通过分区操作实现就地排序:

  1. 选基准:选择数组元素作为基准值(pivot)
  2. 分区:将数组分为小于基准和大于基准的两部分
  3. 递归:对子数组重复上述过程
关键特性
  • 平均时间复杂度O(n log n)
  • 最坏情况O(n²)(可通过优化避免)
  • 原地排序(空间复杂度O(log n)
  • 不稳定排序
C语言实现
// 交换两个元素
void swap(int* a, int* b) {int temp = *a;*a = *b;*b = temp;
}// 分区函数(Lomuto方案)
int partition(int arr[], int low, int high) {int pivot = arr[high];  // 选择最后一个元素作为基准int i = low - 1;  // 小于基准的边界索引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) {int pi = partition(arr, low, high);quickSort(arr, low, pi - 1);quickSort(arr, pi + 1, high);}
}// 优化版基准选择(三数取中法)
int medianOfThree(int arr[], int low, int high) {int mid = low + (high - low)/2;if (arr[low] > arr[mid]) swap(&arr[low], &arr[mid]);if (arr[low] > arr[high]) swap(&arr[low], &arr[high]);if (arr[mid] > arr[high]) swap(&arr[mid], &arr[high]);return mid;
}

三、算法对比分析

特性归并排序快速排序
时间复杂度稳定O(n log n)平均O(n log n),最差O(n²)
空间复杂度O(n)O(log n)
稳定性稳定不稳定
最佳场景链表/大数据集/需要稳定性内存排序/随机数据
缓存利用率较差(频繁创建临时数组)优秀(就地排序)
实现复杂度较高(需要合并操作)较低(分区策略简单)

四、总结

「稳链外,选归并;快省效,用快排」

  • 稳(稳定性) / 链(链表) / 外(外部数据) → 归并排序
  • 快(速度) / 省(内存) / 效(效率) → 快速排序
http://www.dtcms.com/wzjs/152003.html

相关文章:

  • 上海金山网站设计公司成都网站快速排名
  • 电影网站怎么制作长春网站搭建
  • 网站建设方案书 个人网站网络销售这个工作到底怎么样
  • 新发布一个网站公告怎么做seo营销网站
  • 济宁网站建设服务著名的网络营销案例
  • 大型网站建设价格多少搜索引擎优化英文简称
  • 自己做的网站怎么挂网上解析域名网站
  • 河北省网站建设公司网络营销网站建设案例
  • 青岛做网站建设的公司广西seo
  • 江苏省建设工人考勤网站百度站长工具平台
  • 网站建设公司深圳关键词seo
  • 成都手机号码销售网站建设网站源码建站
  • 不用下载就能看的网站的浏览器国际新闻最新消息战争
  • 番禺网站制作多少钱我想在百度上做广告怎么做
  • 网站怎么做qq微信登陆界面设计湖北seo关键词排名优化软件
  • 当今做那些网站致富百度导航
  • 软件外包价格seo接单
  • 科技网站内容设计seo权重优化
  • 中小企业建站排名沈阳专业网站seo推广
  • 虾米音乐歌曲链接做qq音乐网站今天新闻头条新闻
  • 做研究的网站曼联官方发文
  • 做暖暖视频免费观看免费网站免费创建网站
  • 南阳做网站多少电话经典软文案例标题加内容
  • 电子商务网站建设asp sql 源码下载凡科建站收费价目表
  • 郴州网警优化是什么梗
  • 涉县专业做网站网页在线客服免费版
  • 可以做外国网站文章深圳全网营销平台排名
  • 郑州网站建设哪家最好网络营销课程实训报告
  • 公司网站创建seo方案怎么做
  • 长治公司网站建设潍坊网站定制模板建站