![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
u013521296
这个作者很懒,什么都没留下…
展开
-
1、时间复杂度和简单排序
预备知识1、时间复杂度①常数的时间操作:一个操作如果和数据量没有关系,每次都是固定时间操作,叫做常数操作。 ②时间复杂度常用O(读作big O)来表示。具体来说,在常数操作数量的表达式中, 只要高阶项,不要低阶项,也不要高阶项的系数,剩下的部分记为f(N),那么时间复杂度记为 O(f(N))。例1、时间复杂度的例子对一个长度为N的数组进行排序: 算法:依次从0—-N...原创 2018-08-04 15:36:31 · 2498 阅读 · 0 评论 -
选择排序C++
#include<iostream>using namespace std;void swap1(int *arr, int a, int b) {//交换数组元素 int tem = arr[a]; arr[a] = arr[b]; arr[b] = tem;}void selectionSort(int *a,int length) { int index = ...原创 2019-03-01 16:59:02 · 140 阅读 · 0 评论 -
冒泡排序C++
#include<iostream>using namespace std;void swap(int *arr, int a, int b) {//交换数组元素 int tem = arr[a]; arr[a] = arr[b]; arr[b] = tem; }void bubbleSort(int * a,int length ) { int low = 0;...原创 2019-03-01 16:57:50 · 169 阅读 · 0 评论 -
插入排序(C++两个栈)
#include&amp;lt;iostream&amp;gt;#include&amp;lt;stack&amp;gt;using namespace std;/*通过使用两个栈,来实现插入排序result 排好序的栈randomstack 随机生成的乱序的栈①弹出乱序的栈顶元素,赋值给tmp后并pop()删除②若result栈为空或者result栈顶元素&amp;lt;=tmp,把tmp压入result栈,转载 2019-02-10 18:31:48 · 357 阅读 · 0 评论 -
单链表和双向链表反转 java
题目要求: 反转单向和双向链表 【题目】 分别实现反转单向链表和反转双向链表的函数。 【要求】 如果链表长度为N, 时间复杂度要求为O(N), 额外空间 复杂度要求为O(1)//node类class Node { public int data; public Node next; Node(int d){ this.data=d; ...转载 2018-08-20 15:51:18 · 2207 阅读 · 0 评论 -
几道与矩阵有关的练习题
1、转圈打印矩阵【题目】 给定一个整型矩阵matrix, 请按照转圈的方式打印它。 例如: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 打印结果为: 1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9,5, 6, 7, 11, 10 【要求】 额外空间复杂度为O(1)。 思路...原创 2018-08-17 11:26:45 · 2069 阅读 · 0 评论 -
队列实现栈和栈实现队列
1、如何仅用队列结构实现栈import java.util.LinkedList;import java.util.Queue;//如何仅用队列结构实现栈/*①创建两个队列data和help;②push操作,直接数字add进data队列;③pop操作,将data中除了队列最后一个之外全部出队poll,进到help队列中,然后将data中的最后一个元素出队;然后交换hel...原创 2018-08-16 02:01:16 · 252 阅读 · 0 评论 -
用数组结构实现大小固定的队列和栈
1、用数组结构实现大小固定的栈/*用数组结构实现大小固定的栈 */public class exercise1{ //用数组实现大小固定的栈 public static class ArrayStack { private Integer[] mystack; //index始终指向栈顶的元素 private ...原创 2018-08-15 23:06:34 · 371 阅读 · 0 评论 -
练习:用数组结构实现大小固定的队列和栈
用数组结构实现大小固定的队列和栈package exercise;import java.util.Arrays;/*用数组结构实现大小固定的队列和栈 */public class exercise1{ //用数组实现大小固定的栈 public static class ArrayStack { private Integer[] my...原创 2018-08-15 21:30:31 · 238 阅读 · 0 评论 -
堆排序
堆:完全二叉树 堆中i节点: 左孩子:2xi+1 右孩子:2×i+2 父节点:(i-1)/2import java.util.Arrays;/*堆排序:将数组处理成一个大根堆;将堆的顶部与最后一个与元素进行交换,并将边界heapsize左移一位将交换后的堆,重新调成大根堆;重复步骤一。 */public class heapSort ...原创 2018-08-13 09:36:08 · 155 阅读 · 0 评论 -
荷兰国旗问题和快速排序
1、 题目一:给定一个数组arr和一个数num,让大于这数的数字放在数组的右边,小于等于这个数字放在数组的左边。要求:时间复杂度O(n),额外空间复杂度O(1)/*我的代码*/public class exercise__1 { public static void sort_num(int[] arr,int num){ int left_sub=0; ...原创 2018-08-13 09:29:08 · 1490 阅读 · 0 评论 -
非比较排序(计数排序、桶排序、基数排序)
1、计数排序 1、找出待排序的数组中最大和最小的元素 2、统计数组中每个值为 i的元素出现的次数,存入数组 C 的第i项 3、 对所有的计数累加 (从C中的第一个元素开始,每一项和前一项相加) 4、 反向填充目标数组:将每个元素 i放在新数组的第 C[i]项,每放一个元素就将 C[i]减去1 ...原创 2018-08-15 10:15:26 · 338 阅读 · 0 评论 -
插入排序C++
1、算法描述/*变量:i=1..............代表待插入数字的下标;preIndex.........代表前一个元素的下标;length...........代表数组的长度排序过程:arr[0]跳过,从arr[1]开始,每一个数都和它前面的数字比较。while(i&amp;lt;length){//遍历数组arr[1]...arr[length-1] preIndex=i-1...原创 2019-03-03 09:39:13 · 383 阅读 · 0 评论