数据结构
文章平均质量分 52
s_liang666
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
排序算法(三)选择排序
基本思想:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的 数据元素排完 。 1、直接选择排序 思想:(1)从待排序序列中,找到关键字最小的元素; (2)如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换; (3)从余下的 N - 1 个元素中,找出关键字最小的元素,重复(1)、(2)步,直到排序结束。 //直接选择排序 void SelectSort(int arr[], int n) { for (int i = 0; i < n; ++原创 2021-08-03 23:19:41 · 262 阅读 · 0 评论 -
排序算法(二)交换排序
**基本思想:**所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排 序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。 1、冒泡排序 它重复地走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 假设有一个大小为 N 的无序序列。以升序冒泡排序为例,冒泡排序就是要每趟排序过程中通过两两比较相邻元素,将小的数字放到前面,大的数字放在后面。每一趟排序都是原创 2021-08-03 21:19:36 · 245 阅读 · 0 评论 -
排序算法(一)插入排序
1、直接插入排序 思想:每一趟将一个待排序的记录,按照其关键字的大小插入到有序队列的合适位置里,直到全部插入完成。 当数据正序时,执行效率最好,每次插入都不用移动前面的元素,时间复杂度为O(N)。 当数据反序时,执行效率最差,每次插入都要前面的元素后移,时间复杂度为O(N^2)。 所以,数据越接近正序,直接插入排序的算法性能越好。 由于只需要一个临时变量进行存储,因此空间复杂度为O(1)。 直接排序过程中,不需要改变相等元素的位置,所以是稳定的算法。 void insertSort(int arr[],原创 2021-08-02 22:40:55 · 340 阅读 · 0 评论 -
二叉树的基本操作(一)
1、求二叉树第K层结点的个数 int get_k(BiTNode *root, int k) { if(root == nullptr) return 0; if(k==1) return 1; //递归计算左右子树某一层的结点数 return get_k(root->left, k-1) + get_k(root->left, k-1); } 2、二叉树的镜像 (1)求二叉树的镜像 先前序遍历这棵树的...原创 2021-08-01 10:56:22 · 119 阅读 · 0 评论 -
二叉树遍历及基本操作
一、二叉树遍历 1、前序遍历(根左右----DLR) /* 递归 */ void PreOrder(BiTNode *root) { if(root == nullptr) return; cout<<root->data<<" "; //先输出当前结点 PreOrder(root->lchild); //输出左孩子 PreOrder(root->rchild); //输出右孩子 } /* 非递归 */ void Pre原创 2021-07-29 22:27:20 · 352 阅读 · 0 评论
分享