数据结构算法
逗号,!
这个作者很懒,什么都没留下…
展开
-
用Java写冒泡排序法
冒泡排序法核心思想:比较两个元素,如果前一个比后一个大则进行交换。经过对每个元素的比较,最后将最大的元素设置成最后一个元素。重复操作,最后形成从小到大的排序。冒泡排序算法的原理如下:(1)比较相邻的元素。如果第一个比第二个大,就交换他们两个。(2)对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。(3)针对所有的元素重复以上的步骤,除了最后...原创 2018-11-03 21:01:11 · 294 阅读 · 0 评论 -
堆排序
概述:堆排序是一种树形选择排序,是对直接选择排序的有效改进。堆的定义如下:具有n个元素的序列(k1,k2,…,kn), 当且仅当满足:时称之为堆。由堆的定义可以看出,堆顶元素(即第一个元素)必为最小项(小顶堆)或最大项(大顶堆)。若以一维数组存储一个堆,则堆对应一棵完全二叉树,且所有非叶结点(有子女的结点)的值均不大于(或不小于)其子女的值,根结点(堆顶元素)的值是最小(或最大)的。(a...原创 2019-08-20 22:39:59 · 161 阅读 · 0 评论 -
经典快排与随机快排
快速排序:通过一趟排序将要排序的记录分割成两个独立的部分,其中一部分的所有记录的关键字值都比另外一部分的所有记录的关键字值小,然后再按此方法对这两部分记录分别进行快速排序,整个过程可以递归进行,一次使整个过程变得有序。经典快排代码:import java.util.Arrays;/** * 类名:QuickSort<br> * 功能:经典快排<br> * 作者...原创 2019-08-20 12:25:48 · 238 阅读 · 0 评论 -
归并排序(JAVA语言描述)
归并排序是与插入排序、冒泡排序、选择排序不同的另一类排序方法。归并的含义是将两个有序表合成一个新的有序的表。归并排序的基本思想是,将待排记录r[0]到r[n-1]看作是一个含有n个长度为一的有序子表,把这些子表依次进行两两归并,得到[n/2]个有序的子表;然后再把[n/2]个有序子表进行两两归并,一直重复,最后得到一个长度为n的有序子表为止。算法性能分析(1)时间复杂度:归并排序的归并趟数为...原创 2019-08-14 19:13:11 · 145 阅读 · 0 评论 -
二维数组的查找
题目描述:给定一个二维数组,其每一行从左到右递增排序,从上到下也是递增排序。给定一个数,判断这个数是否在该二维数组中。int[][] x={{1,4,7,11,15},{2,5,8,12,19},{3,6,9,16,12},{10,13,14,17,24},{18,21,23,26,30}};//(数组严格按照题目要求进行设置)解题思路:要求时间复杂度为O(M,N),空间复杂度...原创 2019-04-24 20:20:14 · 159 阅读 · 0 评论 -
优先级队列
优先级队列定义:如果我们给每个元素都分配一个数字来标记其优先级,不妨设较小的数字具有较高的优先级,这样我们就可以在一个集合中访问优先级最高的元素并对其进行查找和删除操作了。这样,我们就引入了优先级队列 这种数据结构。 优先级队列(priority queue) 是0个或多个元素的集合,每个元素都有一个优先权,对优先级队列执行的操作有(1)查找(2)插入一个新元素 (3)删除 一般情况下,查找操作...原创 2019-02-17 15:19:09 · 129 阅读 · 0 评论 -
面试题: 第1行为n代表用户的个数 第2行为n个整数,第i个代表用户标号为i的用户对某类文章的喜好度 第3行为一个正整数q代表查询的组数 第4行到第(3+q)行,每行包含3个整数l,r,k代表一组查
输入描述:输入: 第1行为n代表用户的个数 第2行为n个整数,第i个代表用户标号为i的用户对某类文章的喜好度 第3行为一个正整数q代表查询的组数 第4行到第(3+q)行,每行包含3个整数l,r,k代表一组查询,即标号为l&lt;=i&lt;=r的用户中对这类文章喜好值为k的用户的个数。 数据范围n &lt;= 300000,q&lt;=300000 k是整型输出描述:输出:一共q行,每行一...原创 2019-01-21 18:46:35 · 6051 阅读 · 1 评论 -
JAVA版插入排序法
核心思想:插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。算法步骤:1)将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后 一个元素当成是未排序序列。2)从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相...原创 2018-12-10 20:07:22 · 184 阅读 · 0 评论 -
用Java写选择排序法
选择排序核心思想:扫描所有元素,得到最小的元素,并将最小的元素与左边第一个被元素进行交换。再次扫描,除第一位置的所有元素,得到最小的元素,与左边第二的元素进行交换,以此类推。选择排序法是每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。代码实现:/** * 类名:SelectArray<br> * 功能:TODO(选择排序)<...原创 2018-11-03 21:16:37 · 583 阅读 · 0 评论 -
算法中比较器的使用
实现比较器的方法有两种:实现Comparable,在比试中用的比较少。人为的定义对类的比较,去实现comparator接口;我们定义一个学生类,定义他的name,id,age属性,通过id和age对他进行排序,这时我们用比较器对其进行排序;前面元素减去后面元素如果为负数,则前面小排在前面。反之,则大的排在前面,为降序。public class Code_11_Comparator {...原创 2019-08-22 09:05:17 · 242 阅读 · 0 评论