![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
Java&C
一只小菜gou
这个作者很懒,什么都没留下…
展开
-
C语言--栈
#include <stdio.h>#include <stdlib.h>//链表struct List{ int data; struct List*next;};struct Stack{ struct List*head;//头结点 int size;};struct Stack*stackInit(){ struct Stack*stack=(struct Stack*)malloc(sizeof(struc原创 2021-12-16 22:01:42 · 793 阅读 · 0 评论 -
C语言-链表
#include<stdio.h>#include<stdlib.h>//malloc()#include<assert.h>#include"List.h"int main(){ List list;//定义一个链表 initLink(&list);//初试化链表 menu(); DATA item; while (1) { int select = 0; printf("选择想要的操作\n"); scanf("%d", .原创 2021-11-30 19:47:04 · 477 阅读 · 0 评论 -
二分查找法(Binary Search)
上动图:基于有序数组不断二分递归查找取中间的元素与想要查找的元素对比如果相等返回中间的数,如果小于中间的数就在左边查找如果大于中间的数就在右边查找public static <E extends Comparable<E>> int search(E[] data,int l,int r,E target){ if (l>r)return -1;//数组中没有元素 int mid = l+(r-l)/2;//取中间元素的索引 0原创 2021-11-06 11:08:57 · 121 阅读 · 0 评论 -
数据结构--单链表
脑子瓦特了。。。。啥也不是#include <stdio.h>#include <stdlib.h>typedef struct { int num; int score; struct Node* next;}Node,*Linklist;//头插法Linklist creatH() { Node* L; L = (Node*)malloc(sizeof(Node)); L->next = NULL; /*Node* r; r = L;*/原创 2021-11-03 00:13:25 · 68 阅读 · 0 评论 -
希尔排序(Shell Sort)
每天一点小知识,快乐你我他。电力电子人家都开始复习了,我还没预习呢。。。。上动图:不断的分组,颜色一样的为一组,同组进行插入排序把两个相同颜色的元素归为一组,然后进行插入排序,小的在前,大的在后面第一轮使用分组和插入排序后的结果第二轮把分组的距离缩短一半,再继续进行插入排序,相同颜色为一组第二轮结果第三轮跟第一轮做法一样,分组缩短一倍,插入排序,相邻的为一组结果排好序了实现步骤://第一轮代码(第一版),由这个来改变循环的轮数从而让程序成功public static <原创 2021-11-07 18:07:26 · 159 阅读 · 1 评论 -
堆(Heap)
使用堆来实现优先队列优先队列:就跟有优先级的队列,那个重要先执行那个二叉堆(Binary Heap) :跟二叉树一样满二叉树:所有的叶子节点都是满的完全二叉树:叶子节点不一定满最大堆:堆中某个节点的值不小于其父节点的值。最小堆:堆中某个节点的值不大于其父节点的值。...原创 2021-11-08 00:21:56 · 257 阅读 · 0 评论 -
冒泡排序--你学废了吗?
这玩意学了好久了还是不会。。。。。。public static <E extends Comparable<E>> void sort(E[] data){ for (int i=0;i<data.length;i++){ //data[n-i,n)已排好序(第一层循环变量i表示的是后面已经有i个元素排好了) //通过冒泡在data[n-i-1)位置放上合适的元素(j变量不断从数组开头索引对比交换)原创 2021-11-03 22:46:24 · 115 阅读 · 0 评论 -
二分搜索树(Binary Search Tree )
树结构:就是和现实中的树一样一个树根开出很多枝叶树倒过来:二叉树:只有两个枝杈的树。(多叉树)1、具有天然的递归结构2、二叉树不一定是满的3、二分搜索树是二叉树4、二分搜索树的每个节点的值:大于其左子树的所有结点的值小于其右子树的值5、存储的数据必须要有可比较性(“凡事都有代价,出来混迟早要还的”)还是不太理解。。。。public class BST<E extends Comparable<E>> { //节点类 private cla原创 2021-11-06 17:36:03 · 359 阅读 · 0 评论 -
插入排序(Insert Sort)
上动图:插入排序: public static <E extends Comparable<E>> void sort(E[] data){ for (int i=1;i<data.length;i++){ for (int j=i-1;j>=0;j--){ if (data[j].compareTo(data[j+1])>0){ swap原创 2021-11-05 00:26:54 · 73 阅读 · 0 评论 -
选择排序--哦哦哦
啥也不是,先上链接:https://www.cnblogs.com/onepixel/articles/7674659.html再上动图后上代码:代码由简到繁原创 2021-11-04 13:16:15 · 65 阅读 · 0 评论 -
快速排序(Quick Sort)
快速排序:选择一个数,大于这个数的在右边,小于这个数的在左边不断地用递归的方法去实现上动图: public static <E extends Comparable<E>> void sort(E[] data,int l,int r){ //求解最基本的问题 if (l>=r)return ;//当数组里面没有元素或者元素为一个时,就不用排序 // <4 4(data[p]) >4原创 2021-11-05 23:25:54 · 68 阅读 · 0 评论 -
归并排序(Merge Sort)
上动图:所有元素不断地拆成两份,拆到最小的只剩两个,然后就进行排序,不断往上排序复合。分治法和递归思想。这玩意好像有点难理解。。。。 //归并排序,递归和合并 public static <E extends Comparable<E>> void sort(E[] data,int l,int r){ if (l>=r)return ;//求解最基本问题 int mid=(l+r)/2; //对data原创 2021-11-04 17:29:04 · 106 阅读 · 0 评论