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

设计一个企业网站报价购物网站页面设计思路

设计一个企业网站报价,购物网站页面设计思路,衡阳公司网站建设,如何做网站布局优化文章目录 归并排序与快速排序的简单实现(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/807680.html

相关文章:

  • 互联网金融网站开发电脑怎样做网站
  • 山东网站备案广州3d网站开发
  • 网站备案公司倒闭俄罗斯外贸网站
  • 深圳网站建设运营公司小区推广最有效的方式
  • 做毕业设计免费网站建设淘宝做关键词的网站
  • 有什么软件做短视频网站好wordpress价格计算
  • 中国最大的手表网站中国纵横168网站建设系统
  • 学网站建设 去那里php wordpress开源
  • 攀枝花建设工程质量监督站投诉网站网站开发 问题解决
  • 电子商务网站建设不足网站建设的实施方式
  • 地板网站模板做我韩国连续剧网站
  • 网站建设有哪些项目wordpress可视化插件下载
  • 怎么设置公司网站全国软件公司排名
  • 欧美网站模板 psd小程序网站建站模板
  • 深圳横岗做网站的wordpress伪静态linux
  • 网站开发项目管理步骤seo关键词排名优化怎样收费
  • 关键词挖掘机爱站网食品品牌策划方案
  • 网站集群系统建设镇江市远航网络科技有限公司
  • 扁平wordpress主题福建seo外包
  • 做百度推广送网站烟台网站建设费用
  • 个人网站号备案吗WordPress批量用户
  • 上海网站建设定制公司百度广告投放价格
  • 英文自助建站网络营销是什么样的
  • 昆明网站建设报价专业订制网站制作
  • 中国容桂品牌网站建设wordpress 移动版
  • 佛山做网站制作公司dede 网站目录
  • 网站 手机版网站开发合同国外网站域名
  • 地方志网站建设个性定制平台
  • 网站的盈利模式郑州网站建设十大公司
  • 58网站开发要多少钱电影网站盗链怎么做