数据结构与算法
文章平均质量分 80
上进的鸭
菜还不爱学习
展开
-
关于top N问题
思路1:堆处理 //最小k个数字 public int[] smallestK(int[] arr, int k) { if (arr.length==0)return arr; // 初始化成小顶堆 for (int i = arr.length / 2 - 1; i >=0; i--) { adjust(arr, i, arr.length); } int n = k - 1;原创 2020-09-23 10:48:53 · 169 阅读 · 0 评论 -
关于堆排序的理解
1.交换 private static void swap(int[] arr, int index1, int index2) { int tmp = arr[index1]; arr[index1] = arr[index2]; arr[index2] = tmp; } 2.堆化 private static void adjust(int[] arr, int index, int length) { // 暂存原创 2020-09-16 00:34:56 · 89 阅读 · 0 评论 -
高斯消元法
高斯消元法,是线性代数中的一个算法,可以用来解现行方程组,并且可以求出矩阵的秩。 原理:若用初等行变换将增广矩阵 化为 ,则AX = B与CX = D是同解方程组。 原博主 高斯消元法后,自己也试着写了一下。 代码如下: #include //file read using namespace std; //系数矩阵 float matrix[20][20]; //常数向量b原创 2017-10-12 11:50:27 · 599 阅读 · 0 评论 -
多段图的最短路径领接表法
以下是例图 实现代码 过程都在注释里 #include using namespace std; #define MAXVEX 100 /* 最大顶点数,应由用户定义 */ typedef struct EdgeNode /* 边表结点 */ { int adjvex;//顶点对应下标 int weight;//权值 EdgeNode *next;//指向下一个邻接点 }E原创 2017-11-03 22:29:09 · 829 阅读 · 1 评论 -
回溯法
1.回溯法 主要思想 每次构造解的一个分量,然后按照下面的方法评估这个部分构造解。如果一个部分构造解可以进一步构造而不会违法问题的约束,我们就接受对解的下一分量所做的第一个合法选择。如果无法对下一分量进行合法的选择,就不必对剩下的任何分量做任何选择了。在这种情况下,该算法进行回溯,把部分构造解的最后一个分量替换为它的下一个选择。 光光看上面的主要思想好像也不是很清楚到底在说什么。原创 2017-11-28 20:41:47 · 202 阅读 · 0 评论 -
选择排序
一个数组,从序号0,1,2,3,…,N-1; 标记为序号0的元素,在1,..N-1,中找到最小值,替换序号为0的元素-完成后 标记为序号1的元素,在2,..N-1, 中知道最小值,替换序号为0的元素-完成后 ….. 标记为序号N-2的元素,与N-1比较看看是否有必要要互换。 a[]={10,9,8,7,6,5,4,3,2,1} 排序过程为 10 9 8 7 6 5 4 3 2 1...原创 2018-03-25 20:51:07 · 98 阅读 · 0 评论