数据结构&算法
数据结构学习
little train
这个作者很懒,什么都没留下…
展开
-
堆排序
一、什么是堆?堆是一种任意节点不大于或者不小于父节点的完全二叉树结构。由堆的定义可以知道堆的父节点一定大于或者小于其孩子节点,同时每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。其中根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。二、堆排序基本思想1) 建立最大堆(最小堆),此时堆顶元素是该组数据中最大数据(最小数据)2) 移除堆顶元素,重新建立最大堆(最小堆)3) 重复步骤2)4) 数据全部移除,移除数据构建成有序序列三、示例分析 (a原创 2021-01-27 15:01:23 · 227 阅读 · 0 评论 -
插入排序和希尔排序学习
一、插入排序基本思想插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。插入排序步骤:1) 从第一个元素开始,该元素认为是已经被排序的2) 取出下一个元素(key),在已经排序的元素序列从后向前扫描3) 如果该元素大于新元素(key),将该元素移到下一个位置4) 重复步骤3,直到找到已排序的元素小于或者等于新元素(key)的位置5) 将新元素(key)插入到该位置6) 重复步骤2 - 5二、示例分析三、代码实现#原创 2021-01-26 16:17:40 · 132 阅读 · 0 评论 -
选择排序
一、选择排序基本思想首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。二、示例分析...原创 2021-01-26 10:20:21 · 145 阅读 · 0 评论 -
冒泡排序
一、冒泡排序基本思想依次将数组中相邻两个元素比较,并按要求的排序对两个元素进行交换,从而将最大/最小的数推至最前或者最后,对余下的数重复上述步骤,最终获得需要的排序顺序。二、示例分析三、代码实现#include <iostream>#include <assert.h>using namespace std;void BubbleSort(int* arr,int size){ assert(arr); for (int i = siz原创 2021-01-21 15:40:24 · 130 阅读 · 0 评论 -
C语言实现链表及链表常见面试题
List.h#ifndef List_h#define List_hstruct ListNode{ int data; struct ListNode* pNext;};void InitList(struct ListNode** pHead); //初始化struct ListNode* CreateNode(int data);//创建结点void PushBack(struct ListNode** pHead, int data);//尾插void PopBa原创 2021-01-05 15:36:30 · 311 阅读 · 0 评论