数据结构与算法
yi-giao-wo-li-giao
老实银,舔狗一只,欢迎大家打我
展开
-
优先队列
搜集元素,处理键值最大的元素 举例:(木秀于林,风必摧之),一堆树,风吹来的时候不会将数目高度排序,但是吹的最狠的是最高的那一棵树 类似于分配优先级,先确定最高优先级 ,即使次级优先级运行中,最高优先级依然可以抢断式先执行 作用:删除最大的元素,插入新元素 实现:添加一段类似选择排序的算法 将最大值和边界元素交换即可...原创 2018-11-12 16:02:17 · 119 阅读 · 0 评论 -
快速排序
归并排序是一种分治的排序算法,他将一个数组分成两个子数组将两部分独立的排序,然后再合并。 快速排序是分治的排序算法,不过他讲两个子数组排序好后整个数组已经是排好序的了; 思路: 1.选取一个键值,一般取第一位 2.用两个指针i,j一个从前面,一个从后面循环遍历后面的数组,若i指针发现比第一个大的,j指针发现比第一个数小的交换他们两个 3.递归分别将左右数组排序 //文件名 :D...原创 2018-11-12 15:42:57 · 83 阅读 · 0 评论 -
背包,栈,队列
背包(只进不出,类似高中数学选修的抓球问题) public class Bag<Item> implements Iterable<Item> Bag()//创建一个空背包 void add(Item item)//添加一个元素 boolean isEmpty()//背包是否为空 int size()//背包中元素数量 栈...原创 2018-11-12 15:37:46 · 166 阅读 · 0 评论 -
选择排序
选择排序 //文件名 :Demo.java import java.lang.*; import java.util.Arrays; import java.util.Scanner; import java.io.*; import java.math.*; public class Demo{ // sort template public static void sort(Compar...原创 2018-11-08 17:36:10 · 81 阅读 · 0 评论 -
二分查找
前提条件是数组有序,所以我自己定义了一个有序的数组 //文件名 :Demo.java import java.util.Arrays; import java.util.Scanner; public class Demo{ public static int rank(int key,int[] a){ int lo = 0; int hi = a.l...原创 2018-11-08 15:01:49 · 68 阅读 · 0 评论 -
递归
关于递归,我的理解是有终止条件的循环 这张图中 小鲤鱼就是终止条件 还可以理解成 打开一扇门,发现还有一扇门,打开后又发现一扇门,不断打开,发现打开最后一扇门没有门了 就拿出里面的东西,原路返回, ...转载 2018-11-10 14:26:04 · 103 阅读 · 0 评论 -
归并排序
1.思想:将两个有序的数组归并成一个更大的有序数组 2.实现:要将一个数组排序,可以先(递归地)将他分成两半分别排序然后将结果归并起来 3.优点:长度为N的数组排序所需时间和NLOGN成正比 4.缺点:所需额外空间和N成正比 //算法:原地归并 //1.将i = 0, j = mid; //2.相当于将一个大数组一分成两个数组 i=0,j=mid是第一,二个数组下标 //有四种情况...原创 2018-11-10 14:17:36 · 85 阅读 · 0 评论 -
希尔排序
1.前提:基于直接插入排序算法 2.背景:直接插入排序针对于大规模乱序和倒序效率较低 3.思想: 使数组中任意间隔为H的元素都是有序的,换句话说是一个H有序数组是H个互相独立的有序数组编制成的数组 4.实现:对于每个H 用插入排序将H个子数组独立排序 //文件名 :Demo.java import java.lang.*; import java.util.Arrays; impor...原创 2018-11-09 15:58:37 · 92 阅读 · 0 评论