
算法
Sun.ME
这个作者很懒,什么都没留下…
展开
-
二分查找算法(C++)
C++二分查找算法原理如下图: 该算法只针对有序列表才有意义。#include using namespace std;//二分搜索算法,折半查找//二分查找要求被查找的数组的元素是按照有序的顺序排列的int main(){ int array[100]; //数组的大小 int size = 0; cout "输入需要创建的数组的元素个数:原创 2018-01-24 13:09:53 · 3194 阅读 · 2 评论 -
简单选择排序算法
简单选择排序算法简单选择排序算法:即通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录交换。排序过程如下所示: 具体实现算法如下:void SimpleSelectionSort(int *array,int arrayLength){ //将当前下标定义为最小值的下标 int min; for(auto i=0;i&...原创 2018-04-02 11:28:42 · 9386 阅读 · 3 评论 -
链栈的数据结构以及链栈的实现
线性表有顺序存储结构和链式存储结构,栈属于线性表的一种,也具有顺序存储结构和链式存储结构。对于栈的链式存储结构,一般称之为链栈。栈的插入和删除只在栈顶进行操作,在单链表中,头指针是单链表的必须元素;而在栈中,栈顶指针也是链栈的必须元素,且一般将栈顶放在单链表的头部。链栈的结构代码如下所示://定义数据结点类型//typedef 定义结构类型别名//LinkStaclPtr指向结构的...原创 2018-02-20 22:42:04 · 8041 阅读 · 0 评论 -
栈的顺序结构及栈的实现
栈是线性表的一种特例,其后进先出的数据结构在开发中比较常见。许多软件、应用都提供撤销的操作(ctrl+z),其实现原理就是使用了栈的数据结构。栈是限定仅在表尾进行插入和删除操作的线性表。 通常把允许插入和删除的一端称为栈顶(top),另外一端称为栈底(bottom),不办含任何数据元素的栈称之为空栈。栈又称之为后进先出的线性表,简称LIFO结构。 既然栈属于线性表,那么栈元素之间就具有线性...原创 2018-02-19 22:53:29 · 936 阅读 · 0 评论 -
循环链表的创建、遍历
循环链表在单链表中遍历链表时,判断链表终端结点的next指针为空(node->next=NULL),则表示当前链表遍历完成。循环链表中,将单链表中的终端结点的指针端由空指针改为指向头结点,就使整个单链表形成一个环,使得链表的头尾相接,这种链表称之为单循环链表,简称为循环链表++。循环链表和单链表的主要差异就在于循环的判断条件上,单链表判断循环结束为:node->next==...原创 2018-02-19 14:32:38 · 19160 阅读 · 0 评论 -
头插法和尾插法创建、删除、遍历单链表
单链表的创建方式:头插法和尾插法声明单链表的数据结构//*head表示头插法链表的头指针//*LinkListHead表示头插法创建的链表//tail表示尾插法链表的头指针//*LinkListTail表示尾插法创建的链表struct Node { int data; Node *next;} *head,*tail,*LinkListHead,*LinkLi...原创 2018-02-18 20:33:52 · 4491 阅读 · 0 评论 -
插入排序算法
插入排序算法实现过程如下图所示: 实现原理: 插入排序是基于比较的排序方法,根据比较的结果来调整元素的位置。假设数组索引为0的元素是有序的,我们从索引为1的位置开始比较,如果索引为1的元素的值小于索引为0的元素的值,我们交换两个元素的位置。接下来,将索引为2的元素和索引为1的元素比较,如果索引为2的元素的值小于索引为1的元素的值,交换元素,此时,再将索引为1的元素的值与索引为0原创 2018-01-26 13:46:16 · 330 阅读 · 0 评论 -
冒泡排序算法
冒泡排序算法实现原理如下: 1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 3.针对所有的元素重复以上的步骤,除了最后一个。 4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 假设当前存在一个数组int array[5]={88,13,原创 2018-01-25 12:08:39 · 414 阅读 · 0 评论 -
二分查找(折半算法)
二分查找(折半算法)原创 2017-11-27 21:50:25 · 2664 阅读 · 0 评论 -
从给定数字集合中随机取不重复的数字算法
游戏开发过程中,会遇到比如:从给定的10个道具中随机生成三个给用户,要求生成的道具相互之间不重复。一般情况下,我们会将道具存储在一个集合中,然后生成一个随机数,使用生成的随机数作为集合的索引,从集合中取出对象,传递给实例化函数。这样做有一个缺点,生成的随机数是不定的,多次生成的随机数之间,可能会出现值重复,为了避免这种情况,使用下面的方法来生成随机数。private int[] Creat原创 2018-01-11 21:21:07 · 2289 阅读 · 0 评论 -
概率取值模拟算法
有这样一个需求,从一个给定的集合中随机取一个值。集合如下:int[] seeds = { 1, 2, 3, 4, 5 };要求:取得的值为1、2、3、4、5的概率分别为 5%、5%、5%、35%、50%其实可以创建一个集合来模拟这个取值,如下:Listint> seedList = new Listint>(18) {原创 2018-01-11 21:37:59 · 2344 阅读 · 0 评论 -
C++中一些简单的数组算法 第一篇
C++ 向量合并:#include #include #include using namespace std;//向量的合并vectorint> MergeVector(vectorint>, vectorint>);int main(){ //声明向量LA vectorint> LAVector = { 3,5,8,11 }; //声明向量LB原创 2018-01-23 17:08:40 · 1113 阅读 · 0 评论 -
C++中一些简单的数组算法(矩阵相乘) 第二篇
矩阵的乘法运算公式: #include using namespace std;int main(){ **//矩阵的乘法只有在第一个矩阵的列数与第二个矩阵的行数数相等的时候,矩阵的乘法才有意义**。 //第一个矩阵 int matrix_1[10][10], aRow, aCol; cout "请输入第一个矩阵的行和列:" << endl;原创 2018-01-23 21:32:36 · 9181 阅读 · 2 评论 -
生成随机不重复的数组
之分享过一个生成随机不重复数组的一个算法,感觉不太完善,有一点缺陷。这里重新分享一个新的。核心代码如下如下:using System;using System.Collections;using System.Collections.Generic;public class RandomIndex { //单实例模式 private static RandomInde...原创 2018-06-21 21:15:52 · 3290 阅读 · 0 评论