![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
浪游东戴河
专注于SIP/VoIP协议、音视频、Linux C/C++网络编程等领域,长期提供技术咨询、问题解答、软件外包开发、知识讲座等服务
学无止境,习有所长,没有终点,永不放弃
展开
-
Linux c 冒泡与选择排序实现
选择排序和冒泡排序算法是软件编程的入门必学算法,相当于学历中的幼儿园级别(哈哈)。这两种算法适用于小数据量排序使用,大工程中难有用武之地,因此更多是作为学习案例使用。 以从小到大排序为例, 有N个元素:1. 冒泡排序:外层循环控制内层循环的次数(N-1),每一次内层循环时,相邻元素两两比较,前者小于后者,则交换,每一次内层循环能够将一个当前未固定位置元素中的最大元素固定到最终的排序...原创 2018-08-10 17:24:38 · 359 阅读 · 0 评论 -
Linux c 快速排序算法实现
quick_sort.c:#include <stdio.h>#define ARRAY_N 6int array[ARRAY_N]={2, 3 , 4, 5, 6, 1};int show_list(int array[], int n){ int i = 0; for (i=0; i < ARRAY_N; i++) {...原创 2018-08-22 14:46:41 · 998 阅读 · 2 评论 -
Linux C直接插入排序算法实现
直接插入排序思想是将待排序元素一个一个插入到已排序队列:由于一个元素不存在排序,因此从第二个元素起,将第二个元素之前的元素(也就是第一个元素)看成是已排序队列,将第二个元素与已排序队列比较,找到合适位置并插入;依此类推,将剩下元素插入到已排序队列,完成排序。 时间复杂度:O(N^2)稳定性:稳定 注:时间复杂度与选择(冒泡)排序一样,而代码逻辑看起来比选择(冒泡)排序难理解。...原创 2018-08-31 17:23:49 · 291 阅读 · 0 评论 -
Linux C桶排序算法实现
测试结果:1. 无重复数据 6 3 4 2 5 1 1 2 3 4 5 62. 有重复数据 6 5 2 2 5 1 1 2 2 5 5 63. 有负数,直接退出 6 -5 2 2 5 ...原创 2018-08-31 18:56:53 · 234 阅读 · 0 评论 -
Linux C堆排序(升序)实现
堆排序是利用最大(小)堆实现的排序。首先构造成最大(最小堆),然后将第一个节点和最后一个节点交换,使最后一个节点(n)的值为最大(最小),再将除最后节点的数据进行堆排序,再将第一个节点与(n-1)个节点交换,依此循环n-1次,最终得到升序(降序)有序序列。 复杂度:O(N * logN)稳定性:不稳定测试结果:1.Before sort 5 6 3 ...原创 2018-08-29 17:40:07 · 352 阅读 · 0 评论 -
Linux C希尔排序算法实现
希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名 注:建议先学习插入排序算法,再产学习希尔排序算法。 时间复杂度:O(n^2)稳定性:不稳定 测试: 排序前: 6 ...原创 2018-09-04 11:19:48 · 179 阅读 · 0 评论 -
Linux C 归并排序算法实现
归并排序的思想来源于瑞士轮赛制(因最早使用于1895年在瑞士举办的国际象棋比赛而得名),主要有分为两种,一种是从上到下(源码中的merge_sort_1, 即按分为n/2、n/4.... 部分的顺序合并),一种是从下到上(源码中的merge_sort_2, 即按分为1,2,4...部分的顺序合并 )。 测试结果: 排序前:6 1 4 2 5 3 ...原创 2018-09-03 19:34:41 · 404 阅读 · 0 评论