![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
x-2010
这个作者很懒,什么都没留下…
展开
-
简单的链式队列
链式队列为使用链表来实现队列的存储结构。它创建两个指针top与rear分别指向链表头与链表尾部。 下面是一个头节点的示意图: 此时队列中未存储数据,top与rear指针同时指向头节点。 添加一个新节点示意图: 1. rear->next指向新添加的节点node 2. 新添加的节点node成为新的rear节点 删除一个元素示意图如下: 完整代码如下: #include <stdio.h> #include <string.h> #includ...原创 2021-11-12 14:31:40 · 759 阅读 · 0 评论 -
散列表(哈希表)
数组特点是查找容易,插入删除困难;链表特点是查找困难,插入删除容易。而散列表可以取数组与链表的优点。 散列表就是把key通过一个固定算法函数(哈希函数)转换成一个整型数字,在将该数字对数组长度取余,取余的结果就当做数组下标,后将value存储在以该取余结果为下标的数组中。 公式: 存储位置 = f(关键字) 实例: #include "stdafx.h" #include <stdlib...原创 2020-04-16 15:53:59 · 338 阅读 · 0 评论 -
双向循环链表
双向链表节点有两个指针域,一个前驱指针,一个指向后继指针。且链表中第一个节点前驱节点为NULL,最后一个节点后继节点为NULL // myLink.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <stdlib.h> typedef struct bidir_link_list { struct bidir_lin...原创 2020-04-16 11:28:47 · 302 阅读 · 0 评论 -
结构体与链表进行任意长度数字相加Test
#include "stdafx.h" #include <iostream> #include <string> #include <cstdlib> #include <string.h> #include <stdlib.h> #include <conio.h> using namespace std; //ad...原创 2019-11-05 18:12:16 · 198 阅读 · 0 评论 -
C插入排序
算法步骤: 1.从第一个元素开始,该元素可以认为已经被排序 2.取出下一个元素,在已经排序的元素序列中从后向前扫描 3.如果该元素(已排序)大于新元素,则该元素移到下一个位置 4.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 5.将新元素插入到该位置后 6.重复步骤2~5原创 2017-12-19 09:45:49 · 1047 阅读 · 0 评论 -
C冒泡排序
实例(VS2013): // 冒泡排序 #include void swap(int *data, int pos1, int pos2) { int tmp = *(data + pos1); *(data + pos1) = *(data + pos2); *(data + pos2) = tmp; } void bubblesort(int *data, int size) {原创 2017-12-15 18:00:22 · 518 阅读 · 0 评论 -
C选择排序
算法步骤: 1.在未排序序列中找到最小(大)元素,存放到排序序列的起始位置 2.从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾 3.重复1~2,直到所有元素排序完毕 选择排序的优点与数据移动有关。若某个元素位于正确的最终位置上,则它不会被移动。且每次交换一对元素,它们当中至少有一个被移动到其最终位置上,因此对n个元素的表进行排序,总共进行最多n-1次交换。在所有完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。原创 2017-12-19 10:46:17 · 353 阅读 · 0 评论 -
C希尔排序
希尔排序,也称为递减增量排序算法,是插入排序的一种高效的改进版本。希尔排序是非稳定排序算法。 希尔排序是基于插入排序的以下两点性质而提出改进方法的: 1.插入排序在对几乎已经排好序的数据操作时,效率高,即可达到线性排序的效率 2.但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位 理解希尔排序: 将数组列在一个表中并对列排序(用插入排序),重复这个过程,不过每次用更长的列来进行。最后整个表都只有一列了。将数组转换至表是为了更好的理解这算法,算法本身仅仅对原数组进行排序(通过增加索引的步原创 2017-12-19 11:48:03 · 295 阅读 · 0 评论 -
二分查找
非递归方法思想:前提:待查找对象必须是有序,比如一个从小到大或从大到小的数组。设查找起始范围和结束范围分别为start和end,中值为mid,数组为srcArr[]。过程:有序列表中,将待查找值key与查找范围内(start~end)的中值srcArr[mid]作比较,有如下可能:1.待查找值key小于中值srcArr[mid],则将查找范围缩小到0~mid-1。2.待查找值key大于中值srcA...原创 2018-05-14 14:27:48 · 530 阅读 · 0 评论