算法
程序渣渣的后花园
爱文字爱美食爱艺术的技术宅
展开
-
算法数据结构面试常问题
1、数据结构索引提到了B树 数组和链表的区别,树是用什么存储的,可不可以用数组存储 快排的时间复杂度(NlogN)、最坏情况(N^2) 数据结构上的堆和栈有什么区别、底层结构是什么 红黑树 最大的K个数用什么排序算法,复杂度、同样是NlogN, 快排和堆排序有什么区别。2、算法题:写代码,类似高考成绩,一个表中有很多数据(无序的),给你一个成绩,查出在表中的排名 找出这两个链表是否有相交的点 判断链表有没有环,环起点在哪儿。 手撕topk,时间复杂度是多少。 写个算法,实现抢红包原创 2021-03-13 16:37:03 · 470 阅读 · 0 评论 -
直接插入排序,希尔排序
(一)直接插入排序 1、基本思想:将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。(先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。)特点:越有序越快,就少了交换次数。 2、代码实现:void InsertSort(int *arr, int len)//时间复杂度O(n2),有序时O(n),{ ...原创 2018-08-02 19:27:48 · 166 阅读 · 0 评论 -
简单选择排序
简单选择排序 1、思想:每一趟从待排序序列中选出最小(或者最大)的数据元素,顺序放在已排好序的最后,直到所有待排序序列都有序。 代码实现 #include <iostream>using namespace std;void SelectSort(int *arr,int n)//选择排序{ if(arr == NULL || n<1) { retur...原创 2018-08-02 19:33:04 · 205 阅读 · 0 评论 -
归并排序
1、a、归并思想:将两个或者两个以上的有序表组合成一个有序的新的有序表。 b、2-路归并:2、步骤 a、两个段进行归并排序的Meger()函数: 申请和数组长度相等的额外空间; 定义四个变量; 两个归并段的情况;(两个归并段都有数据;一个归并段有数据,一个没有) 剩下一个归并段的情况; 数组之间的拷贝...原创 2018-08-02 19:42:17 · 190 阅读 · 0 评论