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

山东 网站建设 公司太原市住房与城乡建设厅网站

山东 网站建设 公司,太原市住房与城乡建设厅网站,wordpress怎么解压,完成公司门户网站建设八大经典排序算法 目录 算法概览算法详解 冒泡排序选择排序插入排序希尔排序归并排序快速排序堆排序计数排序 性能对比 1. 算法概览 排序算法平均时间复杂度空间复杂度稳定性排序方式冒泡排序O(n)O(1)稳定In-place选择排序O(n)O(1)不稳定In-place插入排序O(n)O(1)稳定In-pla…

八大经典排序算法

目录

  1. 算法概览
  2. 算法详解
    • 冒泡排序
    • 选择排序
    • 插入排序
    • 希尔排序
    • 归并排序
    • 快速排序
    • 堆排序
    • 计数排序
  3. 性能对比

1. 算法概览

排序算法平均时间复杂度空间复杂度稳定性排序方式
冒泡排序O(n²)O(1)稳定In-place
选择排序O(n²)O(1)不稳定In-place
插入排序O(n²)O(1)稳定In-place
希尔排序O(n log n)O(1)不稳定In-place
归并排序O(n log n)O(n)稳定Out-place
快速排序O(n log n)O(log n)不稳定In-place
堆排序O(n log n)O(1)不稳定In-place
计数排序O(n + k)O(k)稳定Out-place

2. 算法详解

2.1 冒泡排序

基本思想:通过相邻元素比较交换,使最大元素"浮"到末尾
动图演示:气泡从水底逐渐上浮的过程

void bubble_sort(int arr[], int n) {for (int i = 0; i < n-1; i++) {int swapped = 0;for (int j = 0; j < n-i-1; j++) {if (arr[j] > arr[j+1]) {swap(&arr[j], &arr[j+1]);swapped = 1;}}if (!swapped) break; // 提前终止优化}
}

2.2 选择排序

基本思想:每次选择最小元素放到已排序序列末尾

void selection_sort(int arr[], int n) {for (int i = 0; i < n-1; i++) {int min_idx = i;for (int j = i+1; j < n; j++) {if (arr[j] < arr[min_idx]) min_idx = j;}swap(&arr[i], &arr[min_idx]);}
}

2.3 插入排序

基本思想:将未排序元素插入已排序序列合适位置

void insertion_sort(int arr[], int n) {for (int i = 1; i < n; i++) {int key = arr[i];int j = i-1;while (j >= 0 && arr[j] > key) {arr[j+1] = arr[j];j--;}arr[j+1] = key;}
}

2.4 希尔排序

基本思想:分组插入排序,逐步缩小间隔

void shell_sort(int arr[], int n) {for (int gap = n/2; gap > 0; gap /= 2) {for (int i = gap; i < n; i++) {int temp = arr[i];int j;for (j = i; j >= gap && arr[j-gap] > temp; j -= gap)arr[j] = arr[j-gap];arr[j] = temp;}}
}

2.5 归并排序

基本思想:分治法,先拆分再合并有序子序列

void merge(int arr[], int l, int m, int r) {// 合并操作实现
}void merge_sort(int arr[], int l, int r) {if (l < r) {int m = l + (r - l)/2;merge_sort(arr, l, m);merge_sort(arr, m+1, r);merge(arr, l, m, r);}
}

2.6 快速排序

基本思想:选取基准值进行分区排序

int partition(int arr[], int low, int high) {int pivot = arr[high];int i = low - 1;for (int j = low; j < high; j++) {if (arr[j] < pivot) {i++;swap(&arr[i], &arr[j]);}}swap(&arr[i+1], &arr[high]);return i+1;
}void quick_sort(int arr[], int low, int high) {if (low < high) {int pi = partition(arr, low, high);quick_sort(arr, low, pi-1);quick_sort(arr, pi+1, high);}
}

2.7 堆排序

基本思想:利用堆结构进行选择排序

void heapify(int arr[], int n, int i) {// 堆调整实现
}void heap_sort(int arr[], int n) {for (int i = n/2-1; i >= 0; i--)heapify(arr, n, i);for (int i = n-1; i > 0; i--) {swap(&arr[0], &arr[i]);heapify(arr, i, 0);}
}

2.8 计数排序

适用场景:整数排序,数据范围较小

void counting_sort(int arr[], int n) {int max = arr[0], min = arr[0];for (int i = 1; i < n; i++) {if (arr[i] > max) max = arr[i];if (arr[i] < min) min = arr[i];}int range = max - min + 1;int *count = calloc(range, sizeof(int));for (int i = 0; i < n; i++)count[arr[i] - min]++;int idx = 0;for (int i = 0; i < range; i++) {while (count[i]--) arr[idx++] = i + min;}free(count);
}

3. 性能对比

排序算法最佳情况最差情况适用场景
冒泡排序O(n)O(n²)小规模数据/基本有序数据
快速排序O(n log n)O(n²)通用排序/大规模随机数据
归并排序O(n log n)O(n log n)链表排序/外部排序
堆排序O(n log n)O(n log n)内存受限场景
计数排序O(n + k)O(n + k)整数排序/范围较小数据

选择建议

  • 小规模数据:插入排序
  • 通用场景:快速排序
  • 稳定性要求:归并排序
  • 内存敏感:堆排序
  • 特殊场景:计数排序(数据范围小)

完整代码实现建议在本地IDE中测试运行,理解算法原理后尝试手写实现


文章转载自:

http://bXzlmKJ0.jtjmz.cn
http://Psz2JAi8.jtjmz.cn
http://oSnZhXmV.jtjmz.cn
http://RLIEm1gb.jtjmz.cn
http://Hv9ojsw1.jtjmz.cn
http://zDM3e9Rx.jtjmz.cn
http://i6M7Td9i.jtjmz.cn
http://jszdc1AH.jtjmz.cn
http://p7RlDTeW.jtjmz.cn
http://TCHJHUpq.jtjmz.cn
http://Q0dxZRfQ.jtjmz.cn
http://KyDE80AV.jtjmz.cn
http://ML7JoOoB.jtjmz.cn
http://6H6wjXVa.jtjmz.cn
http://r8mMy7r6.jtjmz.cn
http://QgCsa90y.jtjmz.cn
http://ZD65PHU9.jtjmz.cn
http://rEjEeras.jtjmz.cn
http://mhr1ZeLI.jtjmz.cn
http://C0xnPVfs.jtjmz.cn
http://wS6SgnDM.jtjmz.cn
http://zvOxYjER.jtjmz.cn
http://rFnEWpFZ.jtjmz.cn
http://37m9zizM.jtjmz.cn
http://DtuSWQcJ.jtjmz.cn
http://plRtGXTI.jtjmz.cn
http://FjwtUBQm.jtjmz.cn
http://0U0xkvDp.jtjmz.cn
http://yIrQcFmo.jtjmz.cn
http://D11DsMST.jtjmz.cn
http://www.dtcms.com/wzjs/737424.html

相关文章:

  • 南阳理工网站建设私人可以有官方网址吗
  • 深圳网站建设 宝华大厦泰兴网页定制
  • 网站后台策划书2024年还会封城吗
  • 开网站需要哪些程序莆田网站建设方案优化
  • 什么样的资质做电子商务网站python 网站建设
  • 广东装饰公司网站建设国家企业信用信息查询系统
  • 建设银行 福州招聘网站湖北seo服务
  • 贵港市网站建设搭建企业网站公司
  • 专门做搞笑视频的网站遮罩层怎么做网页
  • 建立用模板建立网站html超链接
  • 门户网站优化报价江苏省网站建设哪家好
  • 网站开发平台的公司dede如何制作网站地图
  • 南京网站建设小程酒店网站建设方案结束语
  • 温州建设工程信息网站做的最好的本地生活网站
  • 黄山网站建设哪家好企业网站建设专业精准丨 鸣远科技
  • 网站维护服务内容淘宝客api调用到网站
  • 做5173这样的网站要多少人微信公众号怎么推广和引流
  • 如何写网站优化目标免费注册网站云空间
  • 境内境外网站区别企业宣传
  • 北京南站在哪个街道网站建设的几个阶段
  • 如何在交易网站做电子印章济南网站建设就选搜点网络ok
  • 建筑设计招标网站湖南响应式网站哪家好
  • 导航网站怎么做湖北百度seo厂家
  • 别人的网站是怎么找到的合肥电信网站备案
  • 成都门户网站建设网站开发团队成员介绍
  • 重庆綦江网站制作公司电话求职简历模板2021
  • 微信订阅号怎么做网站网站建设尽量
  • 常州网站制作公司多吗了解深圳网站页面设计
  • 富阳网站建设报价dw建设网站的代码模板下载
  • 石家庄做网站好的公司推荐目前流行的app网站开发模式