快速排序函数及二分法匹配

快速排序:

void sort(int *a,int left,int right)
{
if(left>=right)
{
return ;
}
int i=left;
int j=right;
int key=a[left];
while(i<j)
{
while (i<j&&key<=a[j])
{
j--;
}
a[i]=a[j];
while (i<j&&key>=a[j])
{
i++;
}
a[j]=a[i];
}
a[i]=key;
sort(a,left,i-1);
sort(a,i+1,right);
}

二分法匹配:

int low,high,mid;
low=0,high=n-1,mid=(n-1)/2;
while(low<high&&a[mid]!=b[j])
{
if(a[mid]<b[j])
low=mid+1;
else if(a[mid]>b[j])
high=mid-1;
mid=(low+high)/2;
}
if(a[mid]==b[j])
t=1;

时间: 2024-10-24 13:46:42

快速排序函数及二分法匹配的相关文章

快速排序函数模板

这段时间对STL比较痴迷,遂做了些许研究,今天把原来写过的快速排序算法用模板函数重新写了一下,把代码贴出来分享一下 有两个版本,版本二可以传入比较器,自己定义排序规则 快速排序算法思路: 1)从序列中选出一个元素作为基准: 2)重排序列,所有比基准小的元素位于基准左侧,比基准大的元素位于基准右侧,和基准相等的元素位于任意一侧,此过程称为分组: 3)以递归的方式对小于基准的分组和大于基准的分组分别进行排序. #include <vector> #include <list> //打印

重载函数的调用匹配规则

重载函数的调用匹配,依次按照下列规则来判断: 精确匹配:参数匹配而不做转换,或者只是做微不足道的转换,如数组名到指针.函数名到指向函数的指针.T到const T: 提升匹配:即整数提升(如bool到int.char到int.short到int),float到double: 使用标准转换匹配:如int到double.double到int.double到long double.Derived*到Base*.T*到void*.int到unsigned int: 使用用户自定义匹配: 使用省略号匹配:类

重载函数的参数匹配与转换

重载函数匹配步骤: (1)候选函数的确定:与被调函数同名的函数 (2)选择可行函数:在候选函数中,选择可以调用的函数:1)参数个数与被调函数参数个数相等:2)实参类型与形参类型匹配或者可以隐式类型转换: (3)选择最佳匹配: ① 其每个实参匹配都不劣于其他可行函数需要的匹配 ② 至少有一个实参的匹配优于其他可行函数的匹配. (4)如果没有存在多个最佳匹配,匹配就有二义性: 实参匹配与转换: (1)实参类型转换的优先降序等级:精确匹配> 整型提升> 标准转换> 类类型转换: (2)没有一个

借助二分法匹配时间戳实现快速查找日志内容

前言 借助二分法能够快速匹配时间戳,根据时间戳来找出需要查找的日志内容. 查找前提条件: 1 因为是二分法特性,所以日志的时间必须是按从小到大或者从大到小的顺序排列. 2 根据查找需要,修改匹配时间戳. 3 根据不同的时间戳格式,修改对应的代码. 1 import os 2 import time 3 import sys 4 5 class SearchLog(object): 6 7 def __init__(self, file_name='./log.txt'): 8 self.fp =

day05匿名函数,内置函数,二分法,递归,模块

yield作为表达式来使用的方式 #grep -rl 'python /root """ 查找root下文件中含有python的文件 """ import os def init(func): def wrapper(*args,**kwargs): g=func(*args,**kwargs) next(g) return g return wrapper @init def search(target): while True: search

python函数的参数匹配

版本:一般用python2.7.6 python3.4.3会标注 1.不可变对象(整数.字符串)通过对象引用进行传递,在函数内部不可改变. 1 >>> def f(a): 2 ... a=100 3 ... 4 >>> b=88 5 >>> f(b) 6 >>> b 7 88 2.可变对象(列表.字典)也是通过对象引用进行传递,在函数内部可以改变.(原对象本地改变,但是重新赋值不会改变) 1 >>> def F(a)

EmguCV Image类中的函数(四)使用MatchTemplate函数进行模板匹配

MatchTemplate的函数原型为 Image<Gray, float> MatchTemplate(Image<TColor, TDepth> template, TemplateMatchingType method); 其中TemplateMatchingType 共有6种检测方式 1.平方差匹配 Sqdiff 最好匹配为0.匹配越差,匹配值越大. 2.相关匹配 Ccorr 数值越大表示匹配程度较高,0为最坏的匹配效果. 3相关匹配Ccoeff 1为完美匹配,-1表示最差

pthread_create 报函数参数不匹配问题

pthread_create方法遇到类方法时总会报  argument of type 'void* (Thread::)(void*)' does not match 'void* (*)(void*)'pthread_create方法第三个参数只能是C函数指针或者类到静态函数指针.下面记录一下解决方法 1 include <stdio.h> 2 #include <pthread.h> 3 #include <unistd.h> 4 5 class Thread{

14 内置函数 递归 二分法查找

今日主要内容 1. 昨日补充 repr() 显示出字符串的官方表示形式 chr() ord() 2. 递归 自己调用自己 递归的入口(参数) 和 出口(return) 树形结构的遍历 3. 二分法 掐头结尾取中间 查找效率非常的高 1.递归2.二分法查找 原文地址:https://www.cnblogs.com/work14/p/10209198.html