选择排序(如果递增排序) 每次选取从当前结点到末尾结点中最小的一个与当前结点交换,每一轮固定一个元素位置。 时间复杂度O(n^2),空间复杂度O(1)。以下的演示样例代码以带头结点的链表为存储结构: #include<stdio.h> #include<stdlib.h> #define Elemt ...
分类:
编程语言 时间:
2017-04-14 20:31:31
阅读次数:
155
常用的排序算法的时间复杂度和空间复杂度 排序法 最差时间分析 平均时间复杂度 稳定度 空间复杂度 冒泡排序 O(n2) O(n2) 稳定 O(1) 快速排序 O(n2) O(n*log2n) 不稳定 O(log2n)~O(n) 选择排序 O(n2) O(n2) 稳定 O(1) 二叉树排序 O(n2) ...
分类:
编程语言 时间:
2017-04-13 15:33:04
阅读次数:
204
题目描述对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。测试样例:1->2->2->1返回:true 解答: 用栈即可,就是初次答链表,试一下 ...
分类:
其他好文 时间:
2017-04-12 19:23:12
阅读次数:
96
1.算法步骤: 2.代码实现: public static void heapSort(int[] arr){ for(int i=(arr.length-2)/2;i>=0;i--){ siftDown(arr,i,arr.length-1);//从最后一个非叶节点开始,自上向下比较,形成最大堆 ...
分类:
编程语言 时间:
2017-04-10 13:15:59
阅读次数:
192
本周课堂上学习的是动态规划,因此在LeetCode上找到相应的题进行练习。 题目: Given a string s, find the longest palindromic subsequence's length in s. You may assume that the maximum le ...
分类:
其他好文 时间:
2017-04-10 12:19:14
阅读次数:
163
说明 时间复杂度指的是一个算法执行所耗费的时间 空间复杂度指运行完一个程序所需内存的大小 稳定指,如果a=b,a在b的前面,排序后a仍然在b的前面 不稳定指,如果a=b,a在b的前面,排序后可能会交换位置 JS选择排序 原理 时间复杂度,空间复杂度,稳定性 平均时间复杂度O(n*n) 最好情况O(n ...
分类:
编程语言 时间:
2017-04-07 21:54:39
阅读次数:
191
请设计一个高效算法,判断数组中是否有重复值。必须保证额外空间复杂度为O(1)。 给定一个int数组A及它的大小n,请返回它是否有重复值。 测试样例: ...
分类:
编程语言 时间:
2017-04-05 23:35:13
阅读次数:
259
各种常用排序算法 类别 排序方法 时间复杂度 空间复杂度 稳定性 复杂性 特点 最好 平均 最坏 辅助存储 简单 插入 排序 直接插入 Insert O(N) O(N2) O(N2) O(1) 稳定 简单 希尔排序 Shell O(N) O(N1.3) O(N2) O(1) 不稳定 复杂 选择 排序 ...
分类:
编程语言 时间:
2017-04-04 23:20:06
阅读次数:
309
前向星是一种通过存储边信息的方式存储图的数据结构。它的构造方式非常简单,读入每条边的信息,将边存放在数组中,把数组中的边按照起点顺序排序。 前向星就构造完了。 由于涉及排序,前向星的构造时间复杂度与排序算法有关,一般情况下时间复杂度为O(mlogm)。空间上,需要两个数组,空间复杂度为O(m+n)。 ...
分类:
其他好文 时间:
2017-04-04 10:46:30
阅读次数:
110
思路一:递归版本 思路二:非递归版本,一般二叉树的中序遍历需要记录节点出栈的次数,在中序遍历中,当节点第二次出栈时才输出对应值,这里巧妙的使用一个额外的指针实现了这个功能 以上两种方法的时间和空间复杂度都是O(n); 思路三:使用Morris方法中序遍历,空间复杂度是O(1) ...
分类:
其他好文 时间:
2017-04-01 21:00:29
阅读次数:
170