二分排序之三行代码

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

#include<stdio.h> 

#include<stdlib.h>

 int
a[]={10,22,42,51,56,63,78,99,102,118}; 

 int
binSearch(int* a, int
begin, int
end, int
k){ 

    int
mid = begin + ( (end - begin)>>1 ),index; 

    index = a[mid] < k && begin + 1 < end ? binSearch(a,mid+1,end,k) :  

          ( a[mid] > k && begin + 1 < end ? binSearch(a,begin,mid,k) :  

            mid * (a[mid] == k) + (a[mid] != k)*(-1)); 

    return
index;     

}  

int 
main() { 

    int
result = binSearch(a,0, sizeof(a)/sizeof(int), 22); 

    printf("%d\n",result); 

    

    return
0;

  

二分排序之三行代码,布布扣,bubuko.com

时间: 2024-08-08 21:38:34

二分排序之三行代码的相关文章

Python实现各种排序算法的代码示例总结

Python实现各种排序算法的代码示例总结 作者:Donald Knuth 字体:[增加 减小] 类型:转载 时间:2015-12-11我要评论 这篇文章主要介绍了Python实现各种排序算法的代码示例总结,其实Python是非常好的算法入门学习时的配套高级语言,需要的朋友可以参考下 在Python实践中,我们往往遇到排序问题,比如在对搜索结果打分的排序(没有排序就没有Google等搜索引擎的存在),当然,这样的例子数不胜数.<数据结构>也会花大量篇幅讲解排序.之前一段时间,由于需要,我复习了

二分排序法

<pre> <script type="text/javascript"> //二分排序法从小到大排序 /*算法原理: 把一组数中的N个数分为三个部分: 第1部分.中间选一个 第2部分.小于中间的一个放左边 第3部分.大于中间的一个放到右边 重复以上步骤,直到排好为止.重复次数是不确定的根据元素多少和元素顺序都有关系 假设有数组: [7,6,9,5,3]; 第一次: 取出中间一项9,如果是偶数项比如4个可以取第二个或第三个都行的. 把小于9的放到左边数组中,大于

Codeforces Round #521 (Div. 3) D. Cutting Out 【二分+排序】

任意门:http://codeforces.com/contest/1077/problem/D D. Cutting Out time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standard output You are given an array ss consisting of nn integers. You have to find any ar

排序算法总结---代码+性能

// data_sort_alg.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include "sort_alg.h" #include <iostream> #include <vector> void show(std::vector<int> &a) { std::vector<int>::iterator it=a.begin(); while(it!=a.

网吧随机三行代码蓝屏解决方案

网吧随机出现3行代码的蓝屏,这样的蓝屏是抓不到DUMP的,所以一直没有办法分析的,各种环境下都会出现,其他平台也发现的,当然这个也不是每个网吧都出现的,所以也会遇到有人说“隔壁老王家”就好的.出现这样的蓝屏一般是在结账下机.换机的时候:还有就是玩DNF中途掉线,然后在登陆就可能会蓝了. 经过联系DNF官方的人,回复说客户机BIOS里开启VT试下,因为腾讯的游戏在VT上有优化的,稳定性更好. 于是找了几个用户开启VT后,暂时没有发现这样的蓝屏了,另外一个用户机器本来就开启VT的,就没有发现过这样的

三行代码接入,社交软件打字时底下弹出的表情布局,自定义ViewPager+页面点标+各种功能的android小框架。

(转载请声明出处:http://www.cnblogs.com/linguanh/) 前言: 接上次分享的 ListView 动态加载类,入口:http://www.cnblogs.com/linguanh/p/4645115.html  这次分享给大家的是,刚些写好的类似社交软件打字时地下弹出的表情布局. 先看下我的默认效果图. 该效果图里面使用的图片资源,是默认的IC_lanucher,在我的类里面,你可以自定义,包括布局,几行几列,什么的,都可以自定义.底下的是小点标. 下集预告:我将在使

POJ 2398 计算几何+二分+排序

Toy Storage Time Limit: 1000MS  Memory Limit: 65536K Total Submissions: 3953  Accepted: 2334 Description Mom and dad have a problem: their child, Reza, never puts his toys away when he is finished playing with them. They gave Reza a rectangular box t

Datagrid分页、排序、删除代码

<%@ Page language="c#" Codebehind="default.aspx.cs" AutoEventWireup="false" Inherits="datagrid.WebForm1" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <HTML> <HEAD

C# 防止同时调用=========使用读写锁三行代码简单解决多线程并发的问题

http://www.jb51.net/article/99718.htm 本文主要介绍了C#使用读写锁三行代码简单解决多线程并发写入文件时提示"文件正在由另一进程使用,因此该进程无法访问此文件"的问题.需要的朋友可以参考借鉴 在开发程序的过程中,难免少不了写入错误日志这个关键功能.实现这个功能,可以选择使用第三方日志插件,也可以选择使用数据库,还可以自己写个简单的方法把错误信息记录到日志文件. 选择最后一种方法实现的时候,若对文件操作与线程同步不熟悉,问题就有可能出现了,因为同一个文