随笔分类 -  数据结构和算法

上一页 1 2
用栈实现队列和用队列实现栈
摘要:首先需要使用上篇文章(用数组实现栈和队列)中的栈和队列两个类 1.栈实现队列:思路是有两个栈,一个用来放数据(数据栈),一个用来辅助(辅助栈)。数据添加时,会依次压人栈,取数据时肯定会取栈顶元素,但我们想模拟队列的先进先出,所以就得取栈底元素,那么辅助栈就派上用场了,把数据栈的元素依次弹出到辅助栈, 阅读全文
posted @ 2016-05-19 11:00 wzyy 阅读(13999) 评论(1) 推荐(4) 编辑
用数组实现栈和队列
摘要:本篇文章是模拟LinkedList实现其中的:添加,取值,入队,出队,入栈,出栈 1.动态数组的实现 2.队列的实现 3.栈的实现 4.测试类 阅读全文
posted @ 2016-05-18 19:09 wzyy 阅读(1144) 评论(0) 推荐(1) 编辑
字符串反转
摘要:package Test; import java.util.regex.Pattern; public class T1 { public static void main(String[] args) { System.out.println(reversalString("I am a stu 阅读全文
posted @ 2016-03-30 13:45 wzyy 阅读(154) 评论(0) 推荐(0) 编辑
菲波拉契数列
摘要:1 /* 2 * 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子, 3 * 假如兔子都不死,问每个月的兔子总数为多少? 4 //这是一个菲波拉契数列问题 5 6 */ F(n) = {0,n=0; 1,n=0; F(n-1)+F(n-2),n>2 } 方法一: 迭代实现public static void mai... 阅读全文
posted @ 2016-03-30 13:40 wzyy 阅读(344) 评论(0) 推荐(0) 编辑
求所有子数组的和的最大值
摘要:package com.atguigu.java; /* * 输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 * 求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如:输入的数组为1, -2, 3, -10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2, 因此输出为该子数组的和18。 */... 阅读全文
posted @ 2016-03-29 17:42 wzyy 阅读(206) 评论(0) 推荐(0) 编辑
希尔排序(c++)
摘要:希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多, 阅读全文
posted @ 2015-04-02 10:15 wzyy 阅读(259) 评论(0) 推荐(0) 编辑
各类算法比较
摘要:1 时间复杂度比较1) 从平均时间复杂度来考虑:直接插入排序、冒泡、直接选择是三种简单的排序方法,为O(N2),快速、堆、二路归并排序为O(nlog2n),希尔排序介于两者之间。2) 从最好的时间复杂度考虑:直接插入排序和冒泡为O(n),其他的最好情况平均相同。3) 从最坏的时间复杂度考虑:快速排序... 阅读全文
posted @ 2015-04-02 10:08 wzyy 阅读(536) 评论(0) 推荐(0) 编辑
快速排序
摘要: 阅读全文
posted @ 2015-04-02 10:06 wzyy 阅读(247) 评论(0) 推荐(0) 编辑
选择排序
摘要:选择排序算法(不稳定,时间复杂度O(n^2)),性能上要略优于冒泡 升序 基本思想:在一堆数中,先找到最小的数,放到第0位,就不用管了;在剩下的数中再找到第二小的数放到第1位,就不用管了;在剩下的数中再找到第三小的数放到第2位,依次类推,总数依次减一,最后排完为止。 方法: 1 #include < 阅读全文
posted @ 2015-04-02 10:04 wzyy 阅读(211) 评论(0) 推荐(0) 编辑
插入排序
摘要:(是稳定的,时间复杂度O(n^2)),性能上比冒泡和选择好一点 降序 c++实现: 1 #include <iostream> 2 3 using namespace std; 4 5 void sort(int *array) 6 7 { 8 9 for(int i=1;i<10;i++) 10 阅读全文
posted @ 2015-04-02 10:03 wzyy 阅读(152) 评论(0) 推荐(0) 编辑
链表
摘要:一 单向链表1插入 在a和c之间插入b b.next = a.next; //a的后继(c)变为b的后继 a.next = b; //b变为a的后继2删除 在a和b之间删除cnext =c.next; //c的后继(b)变为a的后继二 双向链表1插入 在a和c之间插入bb.next=a.next;/... 阅读全文
posted @ 2015-04-02 10:01 wzyy 阅读(235) 评论(0) 推荐(0) 编辑
摘要:栈#include const int max = 5;float num[max];int top = 0;void push(float x) { if (top==max){return;} num[top] = x;// top++; }void pop()... 阅读全文
posted @ 2015-04-02 09:58 wzyy 阅读(154) 评论(0) 推荐(0) 编辑

上一页 1 2