折中算法

前提:数组是有序的

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<body>

</body>

<script type="text/javascript">

var resultArray = [5,3,10,7,6];

//标记的思想

function sortNum(a, b){

return a-b;

}

resultArray = resultArray.sort(sortNum);

console.log(resultArray);

var min = 0;

var max = resultArray.length - 1;

var index = -1;//用来记录最终找到的结果

for (var i = 0;i < resultArray.length / 2;i++) {

//需要查找的下标

var middle = parseInt((min + max) / 2);

//console.log(middle);

if (resultArray[middle] == 7) {

index = middle;

console.log(index);

break;

}else if(resultArray[middle] < 7){

min = middle + 1;

}else{

max = middle;

}

}

if (index != -1) {

console.log("7这个元素在数组的下标为:" + index);

}

</script>

</html>

时间: 2024-08-25 21:24:44

折中算法的相关文章

转 作业调度算法

http://blog.csdn.net/piaojun_pj/article/details/5931324 .先来先服务(FCFS, First Come First Serve)是最简单的调度算法,按先后顺序进行调度. 定义: 按照作业提交或进程变为就绪状态的先后次序,分派CPU: 当前作业或进程占用CPU,直到执行完或阻塞,才出让CPU(非抢占方式). 在作业或进程唤醒后(如I/O完成),并不立即恢复执行,通常等到当前作业或进程出让CPU. 适用场景: 比较有利于长作业,而不利于短作业.

【LeetCode从零单排】No70.ClimbingStairs

题目 爬楼梯问题,这是一道很有趣的问题.首先看题目: You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top? 这道题一共有三个方法实现(我想到的): 1.递归(对应代码climbStairs) 如果楼梯有n层,我们回退到n-

增强学习 | 多臂赌博机模型

探索的终点是真理 上文介绍了了增强学习的基本框架,一个完整的增强学习框架包括状态.动作.回报.环境等基本概念,其对应的任务问题有三个主要特点: 不同的动作会有不同的回报: 回报是随时间延迟累积的: 行动回报与环境状态是相关的. 对于一些简单的增强学习任务,往往并不需要满足特点2和特点3,将这类问题称为多臂赌博机模型.它来源于赌场的多臂赌博机,即按下不同的臂会有不同额度的奖励.假设有一个Agent能够不断进行尝试找到奖励最大的臂,即建立学习函数,直接将观察状态映射为行动. 学习的最优函数将直接对应

语法分器析总结

语法分析器的知识框图 懒得详细总结了.简单说下LR以及LL算法. LR与LL代表两种对语法的分析方法,第一个字母代表程序的读入顺序,即从左向右读,第二个代表规则的推导,LR代表从右向左推导,LL代表从左向右推导.后边如果有数字的话,代表前看符号.LR算法相比较LL则可以分析更多的文法,也不需要进行一些改写. LL算法是种主要是通过获取分析表实现对语法的判定.其中最主要是为了求得FIRST_S集(字符串的FIRST集).其它一些集合的计算都是为了得到FIRST_S集合,利用FIRST_S集合可以很

IT在线笔试总结(二)

1. 循环队列的长度计算:对于非循环队列,尾指针与头指针的差值便是队列长度,而对于循环队列,差值可能为负数,因此需要将差值加上MAXQSIZE再与MAXQSIZE求余. 2. 算法的时间复杂度取决于:待处理数据的状态与问题的规章. 3. HRN调度算法:最高响应比=(等待时间+执行时间)/ 执行时间.是介于FCFS和SJF之间的一种折中算法. 4. KMP字符串与子串匹配算法时间复杂度:O(m+n).相当于两个串都遍历一遍. 5. 哈夫曼树没有度为1的结点,因此叶子节点n0=(度为2的结点)n2

实验三进程调度模拟程序2.0

实验三进程调度模拟程序2.0 一.实验目的 用高级语言完成一个进程调度程序,以加深对进程的概念及进程调度算法的理解. 二.实验内容和要求 设计一个有 N个进程并发执行的进程调度模拟程序. 1.模拟进程数据的生成 允许用户指定作业的个数(2-24),默认值为5. 允许用户选择输入每个进程的到达时间,所需运行时间,进程的运行时间以时间片为单位. 2. 模拟调度程序的功能 2.1 按照模拟数据的到达时间和所需运行时间,能分别执行以下调度算法. FCFS SJ HRRN RR 2.2 显示每种算法下各进

第一次作业:对Linux系统分析

一.操作系统的组成 1.无进程的内核 在一些操作系统当中操作系统的内核在所有的进程之外执行.也就是说操作系统有自己的内存区域和系统栈,当进程发生      中断,陷阱或系统调用时,此进程的上下文环境被保存在系统栈中,控制权转移给内核.操作系统执行完毕后,恢复进程的上       下文,此进程继续执行,或者保存该进程的上下文环境,然后指派另一进程执行. 2.在用户进程中执行 在操作系统管理的n个进程映像中,不仅仅有进程控制块,用户栈和用户专有数据空间,还有内核栈和所有进程共享着的操作系统代码. 当

排序算法:插入排序,折中插入排序

1??插入排序:把序列分为有序和无序两部分排序,如果是升序,则无序和有序比较小则有序右移直到找到大于有序值然后替换,大于则不变,有序++:继续比较: 主要用途:直接插入算法实现简单,在序列基本有序的情况下,移动和比较的次数少,所以有序情况下优先插入排序 复杂度与稳定度:属于稳定的排序方法,时间复杂度 O(n^2) 空间复杂度 O(1); C/C++: 1 #include <iostream> 2 3 int *InsertSort(int *Array, int size) 4 { 5 if

基于位置信息的聚类算法介绍及模型选择

百度百科 聚类:将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类.由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异."物以类聚,人以群分",在自然科学和社会科学中,存在着大量的分类问题.聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法.聚类分析起源于分类学,但是聚类不等于分类.聚类与分类的不同在于,聚类所要求划分的类是未知的. 分类和聚类算法一直以来都是数据挖掘,机器学习领域的热门课题,因此产生了众多的