C语言 算法
Yyx342779418
这个作者很懒,什么都没留下…
展开
-
C语言 插入排序
#include <stdio.h> // 插入排序:当一列已经有序,再有加入的数据时,适合使用插入排序,它是一种简单直观且稳定的算法(不需要交换) void insert_sort(int* arr,size_t len) { for(int i=1; i<len; i++) { int t = arr[i] , k = i; for(int j=i-1...原创 2019-07-27 11:38:36 · 224 阅读 · 0 评论 -
C语言 冒泡排序
#include <stdio.h> #include <stdlib.h> #define swap(a,b) {typeof(a) t=a; a=b; b=t;} //定义一个swap用于交换,便于使用 /* 冒泡排序:是一种稳定排序,在排序过程中可以监测到数据是否已经有序(对数据的有序性敏感), 可以立即停止,如果待排序的数据基本有序,则冒泡的效率是非常高的。 ...原创 2019-07-27 11:41:40 · 156 阅读 · 0 评论 -
C语言下的 选择排序
#include <stdio.h> #include <stdlib.h> #define swap(a,b) {typeof(a) t=a; a=b; b=t;}//定义一个swap用于交换,便于使用 /* 选择排序:是冒泡排序的一种变种,但是它没有冒泡对数据有序性的敏感 但它在排序过程中比较冒泡要少了很多数据交换, 因此数据比较混乱的情况下要比冒泡要比快。 *...原创 2019-07-27 13:29:02 · 167 阅读 · 0 评论 -
C语言下的顺序查找
#include <stdio.h> #include <stdlib.h> //顺序查找:从头到尾逐一比较,对于要查找的数据没有要求,但方法简单,在小规模的数据查找中比较常用,但效率低。 int order_find(int* arr,size_t len,int key) //要查找的数组 数组长度 要查找的数 { for(int i=0; i<len;...原创 2019-07-27 13:29:57 · 280 阅读 · 0 评论 -
C语言 快速排序
#include <stdio.h> #include <stdlib.h> void _quick_sort(int* arr,size_t left,size_t right) { if(left >= right) return; // 计算标杆的下标 int pi = (left+right)/2; // 备份标杆的值 int pv = arr[...原创 2019-07-27 13:31:01 · 237 阅读 · 0 评论 -
C语言 归并排序
#include <stdio.h> #include <stdlib.h> /* 归并排序: 不交换数据,但需要借助额外的空间,用作临时的存储空间。 */ void merge(int* arr,size_t left,size_t pi,size_t right) { int i=left,j=pi+1,k=0; // 内部合并 int temp[righ...原创 2019-07-27 13:31:58 · 214 阅读 · 0 评论 -
C语言 二分查找
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> /* 二分查找:前提就是数据必须有序,然后从数据的中间位置开始查起,如果中间值比key小, 则从中间值位置开始继续查找,反之刚从开头到中位置查找,重复以上过程直到结束。 从代码实现上来说,既可以用循环实现,也可以用递归实现。 */ int _...原创 2019-07-27 13:33:10 · 115 阅读 · 0 评论 -
C语言 堆排序
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> #define swap(a,b) {typeof(a) t=a; a=b; b=t;} //定义一个swap用于交换,便于使用 /*堆排序: 首先把数据构当作完全二叉树,然后保证根点最大,然后把根结点与最后一个元素交换, 然后再调整...原创 2019-07-27 13:33:52 · 153 阅读 · 0 评论