算法
x-2010
这个作者很懒,什么都没留下…
展开
-
简单的链式队列
链式队列为使用链表来实现队列的存储结构。它创建两个指针top与rear分别指向链表头与链表尾部。下面是一个头节点的示意图:此时队列中未存储数据,top与rear指针同时指向头节点。添加一个新节点示意图:1. rear->next指向新添加的节点node2. 新添加的节点node成为新的rear节点删除一个元素示意图如下:完整代码如下:#include <stdio.h>#include <string.h>#includ...原创 2021-11-12 14:31:40 · 763 阅读 · 0 评论 -
散列表(哈希表)
数组特点是查找容易,插入删除困难;链表特点是查找困难,插入删除容易。而散列表可以取数组与链表的优点。散列表就是把key通过一个固定算法函数(哈希函数)转换成一个整型数字,在将该数字对数组长度取余,取余的结果就当做数组下标,后将value存储在以该取余结果为下标的数组中。公式: 存储位置 = f(关键字)实例:#include "stdafx.h"#include <stdlib...原创 2020-04-16 15:53:59 · 351 阅读 · 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 · 309 阅读 · 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 · 203 阅读 · 0 评论 -
C插入排序
算法步骤:1.从第一个元素开始,该元素可以认为已经被排序2.取出下一个元素,在已经排序的元素序列中从后向前扫描3.如果该元素(已排序)大于新元素,则该元素移到下一个位置4.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置5.将新元素插入到该位置后6.重复步骤2~5原创 2017-12-19 09:45:49 · 1053 阅读 · 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 · 527 阅读 · 0 评论 -
C选择排序
算法步骤:1.在未排序序列中找到最小(大)元素,存放到排序序列的起始位置2.从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾3.重复1~2,直到所有元素排序完毕选择排序的优点与数据移动有关。若某个元素位于正确的最终位置上,则它不会被移动。且每次交换一对元素,它们当中至少有一个被移动到其最终位置上,因此对n个元素的表进行排序,总共进行最多n-1次交换。在所有完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。原创 2017-12-19 10:46:17 · 357 阅读 · 0 评论 -
C希尔排序
希尔排序,也称为递减增量排序算法,是插入排序的一种高效的改进版本。希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:1.插入排序在对几乎已经排好序的数据操作时,效率高,即可达到线性排序的效率2.但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位理解希尔排序:将数组列在一个表中并对列排序(用插入排序),重复这个过程,不过每次用更长的列来进行。最后整个表都只有一列了。将数组转换至表是为了更好的理解这算法,算法本身仅仅对原数组进行排序(通过增加索引的步原创 2017-12-19 11:48:03 · 303 阅读 · 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 · 537 阅读 · 0 评论