数据结构与算法
北极光的征兆_liekkas
这个作者很懒,什么都没留下…
展开
-
转载一位牛人总结的算法内容
一位牛人总结的算法知识转载 2020-10-07 21:12:04 · 106 阅读 · 0 评论 -
二叉树的前序,中序,后序遍历
二叉树先序遍历的实现思想是:访问根节点;访问当前节点的左子树;若当前节点无左子树,则访问当前节点的右子树;二叉树中序遍历的实现思想是:访问当前节点的左子树;访问根节点;访问当前节点的右子树;二叉树后序遍历的实现思想是:从根节点出发,依次遍历各节点的左右子树,直到当前节点左右子树遍历完成后,才访问该节点元素。总结一点,所谓"前、中、后"指的是什么时候遍历根节点#in...原创 2020-03-09 19:09:25 · 177 阅读 · 0 评论 -
折半插入排序
相比起直接插入排序,折半插入排序减少了关键字的比较次数,而记录的移动次数不变,因此折半插入排序的时间复杂度仍然为O(n^2)稳定性:稳定void BInsertSort(int a[], int size) { int i, j, low = 0, high = 0, mid; int temp = 0; for (i = 1; i < size; i++) { l...原创 2020-02-26 10:08:27 · 203 阅读 · 0 评论 -
简单选择排序算法
简单排序算法(Simple Select Sort) 就是通过n-1次关键字间的比较,从n-1+i个记录中选出关键字最小的记录,并好第i(1<= i <=n)个记录交换** 注意交换时的条件判断核心排序部分void SimpleSelectSort(int * Array,int n){ int iMin = 0; for(int i = 0;i <n-1;i...原创 2020-02-20 16:01:29 · 381 阅读 · 0 评论 -
直接插入排序算法
插入排序算法是所有排序方法中最简单的一种算法,其主要的实现思想是将数据按照一定的顺序一个一个的插入到有序的表中,最终得到的序列就是已经排序好的数据。直接插入排序是插入排序算法中的一种,采用的方法是:在添加新的记录时,使用顺序查找的方式找到其要插入的位置,然后将新记录插入。看下面这段代码,理解下:一个一个插入这个概念。在while循环里所做的就是找到要插入的位置void Insert...原创 2020-02-15 15:21:41 · 315 阅读 · 0 评论 -
快速排序
快速排序算法是在起泡排序的基础上进行改进的一种算法,其实现的基本思想是:通过一次排序将整个无序表分成相互独立的两部分,其中一部分中的数据都比另一部分中包含的数据的值小,然后继续沿用此方法分别对两部分进行同样的操作,直到每一个小部分不可再分,所得到的整个序列就成为了有序序列。分割无序表的时候采用了分治法分治法的精髓:分--将问题分解为规模更小的子问题;治--将这些规模更小的子问题逐个击破...原创 2020-02-15 11:06:00 · 159 阅读 · 0 评论 -
双向链表
在双向链表中注意指针节点的移动,难度不大TowWayLink.h#pragma once#include <stdlib.h>#include <string.h>#include <iostream>// 玩家信息结构体typedef struct PlayerInfo{ char chName[20]; // 名字 int iRa...原创 2020-02-14 17:43:41 · 156 阅读 · 0 评论 -
单链表实现
心血来潮又实现了一遍单链表,加深了下对链式存结构的理解。SingleLink.h#pragma once#include <string>#include <iostream>using namespace std;// 商品信息结构体typedef struct GoodsInfo{ char chName[20]; int iPrice; ...原创 2020-02-13 20:01:57 · 161 阅读 · 0 评论 -
数据结构热身--队列的C++实现
单链表实现队列//SinglyLinkedList.h#pragma once#include <windows.h>#include <iostream>using namespace std;// 数据结构体struct STDataInfo{ char name[20]; // 姓名 char club[20]; // 俱乐部 char ...原创 2019-07-17 14:46:23 · 166 阅读 · 0 评论 -
算法热身-冒泡排序
void BubbleSort(int *Array, int iSize){ for(int i = 0;i < iSize - 1;i++) { for(int j = 0;j < iSize -i -1;j++) { if(Array[j] < Array[j + 1]) { int iTemp = Array[j]; Array...原创 2019-07-12 16:23:41 · 143 阅读 · 3 评论 -
数据结构热身-单向链表(C++实现)
个人认为看代码,debug是最好的学习方式关于这部分的理论内容太多了,这里只用代码阐述思想在这里需要注意的地方:1、排序,注意交换数据区而不是指针,否则会出问题2、删除节点的时候,让前节点指向当前节点的下一节点,然后释放当前节点SinglyLinkedList.h#pragma once#include <windows.h>#include <io...原创 2019-07-13 15:23:01 · 183 阅读 · 0 评论 -
二分法简述
int search(int arr[],int n,int key){ int low = 0,high = n-1; int mid,count=0; while(low<=high) { mid = (low+high)/2; if(arr[mid] == key) return mid; if(arr[...转载 2018-09-19 08:19:20 · 432 阅读 · 0 评论