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

c语言数据结构------------归并排序(终)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>int B[100];//归并排序
void Merge(int A[], int low, int mid, int high) {int i = low, j = mid + 1;int k;//将A中元素复制到Bfor (k = low; k <= high; ++k) {B[k] = A[k];}for (k = low; i <= mid && j <= high; k++)if (B[i] <= B[j]) {A[k] = B[i];i++;} else {A[k] = B[j];j++;}while (i <= mid) {A[k] = B[i];k++;i++;}while (j <= high) {A[k] = B[j];k++;j++;}
}void MergeSort(int A[], int low, int high) {if (low < high) {int mid = (low + high) / 2;MergeSort(A, low, mid);MergeSort(A, mid + 1, high);Merge(A, low, mid, high);}}//计数排序
void CountSort(int A[], int n) {
//找到数组的最大最小值int max = A[0];int min = A[0];for (int i = 1; i < n; i++) {if (max < A[i])max = A[i];if (min > A[i])min = A[i];}int k = max - min + 1;int *memory = (int *) malloc(sizeof(int) * k);memset(memory, 0, sizeof(int) * k);for (int i = 0; i < n; ++i) {memory[A[i] - min]++;}//构造累加数组for (int i = 1; i < k; i++) {memory[i] = memory[i] + memory[i - 1];}
//辅助输出数组int *C = malloc(sizeof(int) * n);for (int i = n - 1; i >= 0; i--) {memory[A[i]-min]--;C[memory[A[i]-min]]=A[i];}for (int i = 0; i < n; i++) {A[i] = C[i];}free(C);free(memory);}int main(void) {int A[] = {49, 38, 65, 97, 76, 13, 27};MergeSort(A, 0, 6);printf("归并排序");for (int i = 0; i < sizeof(A) / sizeof(A[0]); ++i) {printf("%d  ", A[i]);}printf("\n");int A2[] = {4, 2, 2, -3, -5, 0, 3, 3, 1};CountSort(A2, 9);printf("计数排序");for (int i = 0; i < sizeof(A2) / sizeof(A2[0]); ++i) {printf("%d  ", A2[i]);}return 0;
}

相关文章:

  • Jenkins的地位和作用
  • 《AI大模型应知应会100篇》第32篇:大模型与医疗健康:辅助诊断的可能性与风险
  • 【人脸识别】百度人脸识别H5方案对接
  • Spring AOP + Logback + MDC全链路日志追踪
  • Cesium学习笔记——坐标系统及坐标转换
  • 实用生活c语言脚本
  • Android如何通过aspectj打造一个无侵入式动态权限申请框架
  • webpack基础使用了解(入口、出口、插件、加载器、优化、别名、打包模式、环境变量、代码分割等)
  • IDEA创建Gradle项目然后删除报错解决方法
  • 调整IntelliJ IDEA中当前文件所在目录的显示位置
  • [原创](现代Delphi 12指南):[macOS 64bit App开发]:在Mac App Store外创建、部署与公证
  • CoinNexus Chain 推出泰利风暴,开启 Web3.0 智能金融元宇宙科技新时代
  • Lua 第8部分 补充知识
  • webrtc使用
  • 自然语言处理 | 语言模型(LM) 浅析
  • 【MCP Node.js SDK 全栈进阶指南】中级篇(2):MCP身份验证与授权实践
  • AI数字人:品牌营销的新宠与增长密码(6/10)
  • 【Linux】计算机基本知识补充
  • 使用PyTorch构建神经网络笔记
  • 【音视频】FFmpeg内存模型
  • 言短意长|大学校门到底应不应该开放?
  • 泽连斯基:停火后愿进行“任何形式”谈判,但领土问题除外
  • 新片|真人版《星际宝贝史迪奇》5月23日与北美同步上映
  • 私和人命:清代四川南部县谢相荣投河溺毙一案
  • 中纪委驻中组部纪检监察组原组长李刚被捕
  • 普京签署有关批准俄罗斯与伊朗全面战略伙伴关系条约的联邦法令