- 博客(17)
- 收藏
- 关注
原创 贪心算法总结
从问题的某一初始解出发: while (朝给定总目标前进一步){利用可行的决策,求出可行解的一个解元素。}由所有解元素组合成问题的一个可行解;
2021-08-17 21:35:10
191
原创 前缀和算法
前缀和算法含义:前缀和实际上就是对于长度为n的数组,我们新建立一个数组长度为n+1,第i个元素的值为前i个元素的和(包括第i个元素)。特点:1、前缀和数组比原数组多一个长度。2、前缀和的第0个元素的值为0。3、根据前缀和数组的特点,求前缀和时。我们只需要用第i个元素的值+第i-1个前缀个数组的值就可能得到第i个前缀和数组的值。(这也是一种动态规划的思想)。应用:前缀和算法可以解决一些在数组中与连续有关的问题。题目第一题和为K的子数组代码class Solution { public i
2021-08-16 02:08:20
393
原创 不同类型的动态规划问题简单区分
目前,就动态规划已经与到了很多类型的题目但现在最难理解的还是一下两个问题。零钱兑换2 这个问题就是让我们求满足所给整数的零钱组合。爬楼梯 但这个问题需要稍微做一下变式,我们能爬的阶数不仅仅局限于1和2了。给定我们一个非空数组,数组内的所有数字都是我们能够直接爬的阶数。。求能爬上顶点的方案这两个问题显然都能利用动态规划的思想去解决。其代码完成后的差别也仅在内外循环的先后顺序循环顺序的改变影响的是动态数组更新方式的不同。第一题代码class Solution { public int
2021-08-14 23:49:36
198
原创 三种有序查找方式
二分查找package 查找;public class Binarysearch { public static void main(String[] args) { int[] a=new int[]{2,5,6,8,67,58,46}; System.out.println(Binarysearch.search(a,58)); } public static int search(int a[],int key) { int low=0; int high=a.length
2021-08-09 21:26:13
461
原创 java创建邻接矩阵
遍历后面再加 ,目前先写下创建。package 图;import java.util.Scanner;public class Graph {//无向图 int edgenum,vexnum;//边数和点数 char[] vexs;//顶点表 int[][] arc;//邻接矩阵 public Graph(int vex,int edgenum) { this.vexs=new char[vex]; this.arc=new int[vex][vex]; } public v
2021-08-04 18:27:23
786
原创 数据结构队列的链式结构功能及实现
package 队列链式存储结构及功能实现;public class LinkedQueue { static class LinkedNode{ int data; LinkedNode next; public LinkedNode(int data) { this.data=data; } } LinkedNode front,rear; int size; public LinkedQueue() { front=null; rear=null; si
2021-07-30 17:31:35
115
原创 数据结构栈的链式结构代码及其部分功能实现
package 栈链式结构及功能实现;/*有了size 就能遍历整个链栈了。 * * */public class LinkedStack { static class LinkedNode{ int data; LinkedNode next; public LinkedNode(int data) { this.data=data; } } LinkedNode top;//指向栈顶,链栈的第一个节点 int size;//链栈长度 public Link
2021-07-29 17:42:05
134
原创 数据结构栈的顺序结构代码及其部分功能实现
package 栈顺序结构及功能实现;/*删除 插入只能在栈顶操作,需要个指针,每次操作检查下是不是空栈,然看再看看栈满没满*/public class Stack { int top;//栈顶指针 int[] stack=new int[50]; public Stack(){ top=-1;//初始化栈顶指针 } //进栈 public void push(int data){ if(top>=stack.length-1) { return ; } e
2021-07-29 16:36:05
122
原创 数据结构线性表之双向循环链表结构代码及其部分功能实现
package 线性表双向循环链表结构及其功能实现;/*优化了下 插入方法,选择的应该是第几个空位插入,双向循环链表,能够正逆两个方向显示数据*******/public class DoubleCircularLinkedList {class ListNode {int data;ListNode prev;//指向前驱ListNode next;//指向后继public ListNode(int data) {this.data = data;}} ListNode
2021-07-28 23:12:28
146
原创 数据结构线性表之循环链表结构代码及其部分功能实现
package 线性表循环链表结构及功能实现;/*链表基本功能已经实现,基本上基于单链表来实现的。循环链表的特殊性,让它在遍历时最后一个数据必须单独 * 显示。 * 既然方法名字叫做插入,那肯定是在两个数字之间,那头尾指针都不会因为插入操作而改变, * 所以链表的循环不会发生错误。 * 删除那里考虑的要全面一点。 * 其他的基本上就是单链表的内容了 * * * * * */public class CircularLinkedList { class ListNode
2021-07-28 20:31:16
156
原创 数据结构线性表之链式结构代码及其部分功能实现
单链表代码package 线性表单链表结构及功能实现;/*程序最大的好处 在于从链表类中创建了一个结点内部类,创建嵌套类的对象 不需要对象名 直接使用.next * * 程序仍可改进点:程序虽然存在头指针了,但我们仍可以申请一个空节点始终作为程序的第一个节点,这样能够 * 使得程序在插入 与 删除等操作时 第一节点 与其他节点操作保持一致。减少代码量。 * * */public class LinkedList {//补充链表更新数值的功能 static class ListNod
2021-07-27 19:19:13
181
原创 数据结构之线性表顺序结构及功能实现
代码实现package 线性表顺序结构及功能实现;import java.util.Scanner;public class List { public static void main(String args[]) { int[] a=new int[20];//数组长度 int length=10;//线性表长度(数据个数) Scanner sc=new Scanner(System.in); for(int i=0;i<length;i++) { System.out
2021-07-27 16:09:42
135
原创 三种排序方法
直接插入排序package 三种排序方法;public class 直接插入排序 { public static void main(String args[]) { int array[]= {7,8,45,231,234,23,98,11}; int temp; int j; for(int i=0;i<array.length-1;i++) { temp=array[i]; j=i-1; while(j>=0&&array[j]<temp)
2021-05-21 16:58:51
191
原创 将一个正整数分解质因数。
**将一个正整数分解质因数。例如:输入90,打印出90=233*5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。import java.util.Scanner;public class MainDemo
2021-04-14 16:30:42
326
原创 java求素数
要求统计给定整数MM和NN区间内素数import java.util.Scanner;public class Test { public static void main(String args[]) { su(); } public static void su() { int mm, nn; Scanner sc = new Scanner(System.in); System.out.println("请输入mm和nn"); mm = sc.nextInt();
2021-04-10 10:38:49
100
原创 java常见数组
public class 不等长数组 { public static void main(String args[]){ int a[][]=new int[9][]; int i; for(i=0;i<a.length;i++) a[i]=new int[i+1]; for(i=0;i<a.length;i++) { for(int j=0;j<a[i].length;j++) { System.out.print((i+1)*(j+1)+" "); }
2021-03-23 12:15:07
147
原创 c语言排序方法(快速排序 ,冒泡排序,选择排序,哈希表)。
**C语言快速排序**#include <stdio.h>#include<string.h>void quick_sort(int *a,int n){ int i,j,p,temp; if(n<2)return; p=a[n/2];//获取数组基准值 for(i=0,j=n-1;;i++,j--) { while(a[i]<p)//对元素进行遍历,假设左边的数据没有p中保存的元素大,那么继续寻找,并且把i自增,当找到比p大的或者相等得则停止
2021-01-09 18:51:05
453
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人