排序算法的C语言实现C代码(未更完) RT-Thread 内核学习--信号量的初步使用 【剑指Offer】57.2 和为S的连续正数序列 Qt三方库开发技术:QXlsx介绍、编译和使用 4G DTU模块的作用和功能说明 【Tips】- Wifi模块和4G无线通信 【5G核心网】 Identifiers 身份标识 DPDK支持的硬件:CPU、网卡NIC、加密引擎、基带加速器 如何根据普通ip地址获取当前地理位置 人工智能能力提升指导总结 520了,用32做个简单的小程序 程序员的数学--用贝叶斯定理来推断一个案子 文旅部新规:在线旅游网站不得擅自屏蔽删除评价 不得大数据杀熟 苏宁易购开学季消费大数据:手机以旧换新销量增长299% 做实供电服务“133” 助大数据直上“云”端 思科前程序员离职 5 月后“删虚拟机跑路”,240 万美元打水漂,网友:够狠! 抗疫代码成国博最新藏品 阿里程序员“写代码写进国博挺酷” 国博史上首次收藏代码!它们是阿里程序员写下的抗疫代码 威胜信息发布2020年上半年业绩:物联网产业进入爆发期 营收净利双增长 下月发布会不止有新品折叠屏手机 酷开的物联网家居生态野心初现 史上最全的数据库面试题 数据库面试必看 一个数据库SQL查询的数次轮回 百度智能云正式对外发布百度智能云数据库品牌GaiaDB 数据库三大泛式是什么 电力行业网管需求 IT运维管理解决方案 citrix桌面虚拟化中的运维工具Director SRE运维体系的构建和工作职责划分 运维的核心价值是什么 手游开发定制的全过程详解 开发人员透露:《赛博朋克2077》枪支泛滥 成熟的产品经理如何应对“这个需求不合理” CI/CD管道对开发和运维的重要性 APP开发的流程是怎样的 如何开发一个APP 零基础学web前端开发要学多久 如何系统学习 Web前端要学习哪些内容呢 前端工程师至少要满足四类客户的需求 前端学习计划思维导图 前端人如何选择自己的技术栈 前端人如何更快地成长 大数据的七大核心具体价值 核心价值究其用户到底是谁 大数据核心技术是什么 该怎么掌握Hadoop知识 未来大数据应用场景广阔 中国将成为全球最大的数据圈 2020大数据产业生态大会通过“现场论道+云端连线”全程直播的方式在北京举行 2020中国大数据生态产业大会 华为云大数据连续四年荣登50强榜首 中国电信全面提速大数据新基建 无法启动计算机时该怎么办 通过这6个专业技巧来加速计算机 计算机专家提供在家工作或学习的技巧 2020年空中数据计算机市场新战略报告:技术进步,趋势与增长 物联网分析市场前景2020-2025年最新发展数据和市场趋势预测 马来西亚主要供应商的物联网(IoT)安全市场规模和增长
您的位置:首页 >运维 >

排序算法的C语言实现C代码(未更完)

总结并编写了部分常用的排序算法,包括前向、后向冒泡排序、简单选择排序、直接插入排序、希尔排序、堆排序、并归排序和快速排序。
具体的原理请参考《大话数据结构》。

#include<stdio.h>//从前向后冒泡void bubble(int arr[], int n){for (int i = 0; i < n - 1; i++){for (int j = 0; j < n - 1 - i; j++){if (arr[j] > arr[j + 1]){int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}//从后向前冒泡void bubble2(int arr[], int n){for (int i = 0; i < n - 1; i++){for (int j = n - 1; j > i; j--){if (arr[j - 1] > arr[j]){int temp = arr[j];arr[j] = arr[j - 1];arr[j - 1] = temp;}}}}//选择排序void selectsort(int arr[], int n){for (int i = 0; i < n ; i++){int index = i;for (int j = i + 1; j < n; j++){if (arr[index] > arr[j])index = j;}if (i != index){int temp = arr[i];arr[i] = arr[index];arr[index] = temp;}}}//插入排序void insertionsort(int arr[], int n){for (int i = 1; i < n; i++){int temp = arr[i];while (i >= 0 && arr[i - 1] > temp){arr[i] = arr[i - 1];i--;}arr[i] = temp;}}//希尔排序void shellsort(int arr[], int n){int gap = n;int temp;int i, j;do{gap = gap / 2;for (i = gap; i < n; i++){if (arr[i] < arr[i - gap]){temp = arr[i];for (j = i - gap; j >= 0 && temp < arr[j]; j -= gap)arr[j + gap] = arr[j];arr[j + gap] = temp;}}} while (gap > 1);}//堆排序void heapadjust(int arr[], int s, int m){int j;int temp = arr[s];for (j = (2*s)+1; j < m; j *= 2){if (j < m && arr[j] < arr[j + 1]) j++;if (temp > arr[j])break;arr[s] = arr[j]; s = j;}arr[s] = temp;}void heapsort(int arr[], int n){int i;for (i = (n/2)-1; i >= 0; i--)heapadjust(arr, i, n);for (i = 0; i < n; i++){int temp = arr[0];arr[0] = arr[n-1-i];arr[n-1-i] = temp;heapadjust(arr, 0, n-1-i-1);}}int main(){int arr[] = { 1,5,9,4,3,2,5,6,6,3,6,9,7,8,4,1,5,2 };//冒泡排序//bubble(arr, 18);//bubble2(arr, 18);//选择排序//selectsort(arr, 18);//插入排序//insertionsort(arr, 18);//希尔排序//shellsort(arr, 18);//堆排序heapsort(arr, 18);for (int i = 0; i < 18; i++)printf("%d ", arr[i]);return 0;}

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。