![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
常用算法(排、查)
常用排序、查找
柳家山头号矿工
如果你喜欢数学,那我们就是朋友!!!
展开
-
10-计数排序C实现
一、函数:void Cou_Sort(int* head,int low,int high)参数解释head:数组指针[low, high]:需排序的数组范围说明首先找到数组中最大值与最小值(用于创建计数数组)然后扫描head开始计数计数数组生成完毕扫描计数数组,向head返回非零值对应的下标#include <stdio.h>#include <time.h>#include <math.h>void Cou_Sort(int* head,i原创 2021-10-12 07:36:26 · 66 阅读 · 0 评论 -
9-基数排序C实现(待补充插图)
一、主函数:void Rad_Sort(int* head,int low,int high)参数解释head:数组指针[low, high]:需排序的数组范围说明创建一个Radix[L+1][10]数组来存储数据Radix第0行第j列存储的信息为当前列中未被使用的行,可用于存储下一个数据Radix第1行到第L行用于储存数据#include <stdio.h>#include <time.h>#include <math.h>void Rad_S原创 2021-10-11 10:00:00 · 63 阅读 · 0 评论 -
7-二路归并排序C实现(递增递减的简单转换)
一、主函数:void Mer_Sort(int* head,int low,int high,int Step_L,int Bool)二路归并参数解释head:数组指针[low, high]:需排序的数组范围Step_L:需排序步长Bool:等于1表示从小到大排序,不等于1从大到小排序主函数引用:void Array_Merge(int* head,int low,int high,int* head1,int low1,int high1,int L,int Step_L,int Bool原创 2021-10-10 15:47:55 · 431 阅读 · 0 评论 -
6-堆排序C实现(递增递减的简单转换,可优化(41行提示))
一、主函数:void Hea_Sort(int* head,int low,int high,int Step_L,int Bool)参数解释head:数组指针[low, high]:需排序的数组范围Step_L:需排序步长Bool:等于1表示从小到大排序,不等于1从大到小排序副函数:void Hea_Adjust(int* head,int high,int Start,int Step_L,int Bool)参数解释head:数组指针Start:需调整的位置high:数组中能够进行原创 2021-10-09 20:46:06 · 212 阅读 · 0 评论 -
5-简单选择排序C实现(递增递减的简单转换)
一、函数:void Sec_Sort(int* head,int low,int high,int Step_L,int Bool)参数解释head:数组指针[low, high]:需排序的数组范围Step_L:需排序步长Bool:等于1表示从小到大排序,不等于1从大到小排序说明扫描数组中i到Shigh范围,步长为Step_L遇到更小的值则将temp指向其下标,内层循环完毕temp指向i到Shigh中的最值将temp处的值与i处的值进行交换Step_L=1时第一步对下标low+{0,原创 2021-10-08 07:34:39 · 429 阅读 · 0 评论 -
4-希尔排序C实现(递增递减的简单转换)
一、函数:void She_Sort(int* head,int low,int high,int* Step_S,int Step_Sl,int Bool)参数解释head:数组指针[low, high]:需排序的数组范围Step_S:步长集合Step_Sl:步长集合大小Bool:等于1表示从小到大排序,不等于1从大到小排序说明例:Step_S={3,2,1}意味着先后进行进行步长为3、2、1的插入排序Step_S[i]=3Step_L=3时,j属于{0, 1, 2}j=0,第一原创 2021-10-07 08:53:59 · 103 阅读 · 0 评论 -
3-间隔插入排序C实现(希尔排序铺垫)
一、参数解释head:数组指针[low, high]:需排序的数组范围Step_L:需排序步长Bool:等于1表示从小到大排序,不等于1从大到小排序说明反向扫描数组中i到low范围遇到更大的值则交换,遇到更小的值则进行下一次循环,通过交换,使得数组low到i范围始终有序Step_L=1时,对下标low+{0,1,2,3,4,5…}插入排序Step_L=2时,对下标low+{0,2,4,6,8,10…}插入排序Step_L=3时,对下标low+{0,3,6,9,12,15…}插入排序以原创 2021-10-07 08:13:18 · 83 阅读 · 0 评论 -
3-插入排序C实现(递增递减的简单转换)
一、参数解释head:数组指针[low, high]:需排序的数组范围Bool:等于1表示从小到大排序,不等于1从大到小排序说明反向扫描数组中i到low范围遇到更大的值则交换,遇到更小的值则进行下一次循环,通过交换,使得数组low到i范围始终有序此方法每遇到更大的值需要交换一次最多的交换次数为第一层循环次数*第二层循环次数(第二层循环每一次循环都需要交换)void Inc_Sort(int* head,int low,int high,int Bool){//插入排序 int t原创 2021-10-06 09:09:37 · 147 阅读 · 0 评论 -
常见排序算法(C实现)
排序算法分类:比较、非比较比较类非线性时间排序: 交换类排序(快速排序和冒泡排序)、插入类排序(简单插入排序和希尔排序)、选择类排序(简单选择排序和堆排序)、归并排序(二路归并排序和多路归并排序)。 非比较类线性时间排序: 计数排序、基数排序、桶排序。...原创 2021-10-05 04:19:07 · 91 阅读 · 0 评论 -
1-冒泡排序C实现(递增递减的简单转换)
void Bub_Sort(int* head,int low,int high){//连续交换 int temp;//交换 int temp1;//优化 for(int i=low;i<high;i++){ temp1=high-(i-low); for(int j=low+1;j<=temp1;j++){ //使得head[j]始终为最值 if(head[j]<head[j-1]){原创 2021-10-04 15:33:57 · 716 阅读 · 0 评论 -
C 语言实现数组冒泡排序
#include <stdio.h>void setSz(); //设置数组内容void sortSz(); //由小到大排序void outPut(); //输出验证数组int main() { int n; //数组长度 printf("%s", "请输入数组大小:"); scanf("%d", &n); int Sz[n]; printf("请输入%d个数字并用回车隔开:\n",n); setSz(Sz, n);原创 2020-10-27 12:13:48 · 568 阅读 · 1 评论 -
2-快速排序C递归实现(递增递减的简单转换)
冒泡排序:void BS(int *nums,int Sta,int End){//需排序的片段首位序号 int temp; for(int i=End;i>Sta;i--){ for(int j=Sta;j<i;j++){ if(nums[j]>nums[j+1]){ temp=nums[j]; nums[j]=nums[j+1]; n原创 2021-07-03 15:52:26 · 354 阅读 · 0 评论 -
查找算法(C实现)(待补充)
折半查找:int Seekaim(int* nums, int aim, int left, int right) { //在[l,r]搜寻aim的位置,-1:不存在 if(nums[left] <= aim && aim <= nums[right]) { while(left < right) { if(nums[(left+right)/2] < aim) { left =原创 2021-07-04 14:17:22 · 56 阅读 · 0 评论