算法
anyi_yj
这个作者很懒,什么都没留下…
展开
-
快速找出故障机器
快速找出故障机器 每个机器中存储一个ID,每个ID分别在两个机器中存储,若机器故障,则少一个ID。 问题转换:有很多ID。(1)其中只有一个ID出现的次数少于2,其他都正常出现2次; (2)其中两个ID仅出现一次,其他都正常出现2次。 目标:找到仅出现一次的机器ID。解析: 1. 使用链表,直接遍...原创 2018-06-14 17:39:02 · 244 阅读 · 0 评论 -
买书问题
买书问题 有五卷书,价格一样,若一次性买不同的两卷,折扣为0.05;若一次买不同三卷,则折扣为0.10,若一次买四卷不同书,折扣为0.2,若买五卷不同书,折扣为0.25.问 设计算法,计算读者一次性购买一批书的最低价格。问题解析: 买1-5本书,最高折扣为一次性购买,6-10本书,可以拆分为1-5的多种组合之和,若购买大于10本,则可以拆分为十本以下的组合。因此这里重...原创 2018-06-14 17:12:53 · 703 阅读 · 0 评论 -
输入数字n,按顺序打印从1到最大的n位十进制数 java实现
输入数字n,按顺序打印从1到最大的n位十进制数import java.util.Scanner;public class _12Print1ToN { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int N=sc.nextInt(); int [] inputarr=new int[N...原创 2018-06-14 17:02:37 · 697 阅读 · 0 评论 -
链表处理:删除、找中点、判断环
删除链表的一个元素若给出头结点和要删除的节点i,首先判断i是否为尾节点(i.next=null),若不是尾节点,则将后面一个节点j的值覆盖到节点i,然后将i节点指向j的下一个节点if( i.next!=null) { node j=i.next; i.value=j.value; i.next=j.next; relax j;}需要考虑的特殊情况有:1.只有一个节点,即头结...原创 2018-06-27 22:50:09 · 260 阅读 · 0 评论 -
各类排序法:插入排序、选择排序、希尔排序、堆排序、快速排序法、
插入排序取第一个元素array[0],放置在最前面,可不操作,自动满足;取array[1],与array[0]比较,若小于,则将array[0]后移移位,将array[1]放在arrat[0]处;再次循环:去array[2],依次向前,与array[1]比较,若小于,则将array[1]后移移位,,再与array[0]比较,依次类推,直到某个array[j-1]<array[2],则将arr...原创 2018-06-27 22:53:53 · 293 阅读 · 0 评论 -
数据结构:堆
结构性和堆序性堆:堆是一棵被完全填满的二叉树,只有底层从左到右填入,可能不满。一棵高为h的二叉树,节点个数为2^h到2^(h+1);用一个数组存储该完全二叉树,数组【0】空闲,从【1】开始存储该堆,则位置i上的节点A,其左儿子在位置(2i)处,右儿子在位置(2i+1)处;对应一节点A的父节点位置为【i/2】下取整。数组实现的堆: 数组【0】空闲,从【1】开始存储该堆,则位置i上的节点...转载 2018-06-27 22:55:34 · 768 阅读 · 0 评论