##########################################################################
ASCE1885的声明:本文源代码归属于:
author: Gonzales Cenelia
homepage: www.ai-search.4t.com
有增改!
##########################################################################
本代码实现二分查找的功能,查找前对数组排序使用的是冒泡排序算法。使用的开发环境是Dev C++ 4.9.9.2。
程序头文件是bisearch.h,实现了程序的主体功能:
namespace ASCE1885 {
//二分查找函数,注意参数array中的元素是排好序的
template <typename T>
int biSearch(int low, int high, T *array,
T search, int (*comp)(T a, T b))
{
int mid = 0;
while(low <= high)
{
mid = (low + high)/2;
if(comp(array[mid], search) == 0) //等于要找的数
{
return mid;
} else if(comp(array[mid], search) < 0) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return -1;
}
//交换函数
template <typename T>
void swap(T &a, T &b)
{
T temp = a;
a = b;
b = temp;
}
//比较函数
template <typename T>
int comp(T a, T b)
{
if(a == b)
return 0;
else if(a > b)
return 1;
return -1;
}
//冒泡排序
template <typename T>
void bubbleSort(T *array, size_t arraySize, int (*comp)(T a, T b))
{
int cmpResult;
for(int i=arraySize-1; i>0; --i)
{
for(int j=0; j<i; ++j)
{
cmpResult = comp(array[j], array[j+1]);
if(cmpResult > 0)
{
swap(array[j], array[j+1]);
}
}
}
}
}
调用上面函数的文件是Template Binary Search.cpp:
#include <iostream>
#include <string>
#include "bisearch.h"
using namespace ASCE1885;
int _comp(char *a, char *b);
template<typename T>
void print_array(T *array, size_t array_size)
{
for(int i = 0; i < array_size; ++i)
{
std::cout << " " << array[i] << std::endl;
}
}
void example1();
void example2();
void example3();
int main()
{
example2();
system("pause");
return 0;
}
int _comp(char *a, char *b)
{
return strcmp(a, b);
}
void example1()
{
int array[] = {-1, 7, 9, 0, 17, 13, 73};
int array_size = sizeof(array)/sizeof(array[0]);
bubbleSort<int>(array, array_size, comp);
std::cout << "Array elements:/n";
print_array(array, array_size);
std::cout << "/nBinary Search/n";
std::cout << " search: 13/n";
std::cout << " search result: " << biSearch<int>(0, array_size, array, 13, comp);
std::cout<<std::endl;
}
void example2()
{
char array[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'};
int array_size = sizeof(array)/sizeof(array[0]);
std::cout << "Array elements:/n";
print_array(array, array_size);
std::cout << "/nBinary Search:/n";
std::cout << " enter your search: ";
char search;
std::cin >> search;
std::cout << " search result: " << biSearch<char>(0, array_size, array, search, comp);
std::cout<<std::endl;
}
void example3()
{
char *array[] = {"Michelle", "Laetitia", "Cindy", "Christina", "Monica", "Claudia"};
int array_size = sizeof(array)/sizeof(array[0]);
std::cout << "/nArray elements /n/nbefore sorting:/n";
print_array(array, array_size);
bubbleSort(array, array_size, _comp);
std::cout << "/nafter:/n";
print_array(array, array_size);
std::cout << "/nBinary Search/n";
std::string search = "Claudia";
std::cout << " search: " << search;
std::cout << "/n search result:= " << biSearch(0, array_size, array, (char*)search.c_str(), _comp);
std::cout<<std::endl;
}
分享到:
相关推荐
asce1885-blogasce1885的博客
ASCE是土木工程学会的重要期刊。国外期刊投稿主要是latex,该期刊有Latex的投稿模板。
PHASE II OF THE ASCE BENCHMARK STUDY ON SHM
ASCE7-10-建筑物和其他结构最小设计荷载-中文版.pdf
此为ASCE的第三代基准模型代码,可供土木工程领域学者使用。
ACS杂志的latex模板,ACS杂志官方上下载的模板一直报错,can not find ghsystem_english.def文件。
土木工程几个著名期刊ASCE和Science direct中输出格式
希望大家能用得着这个东西!检索时很有用啊
mfc工程,一个可以编辑,选择能实现众多功能的list控件示范工程,
ASCE全文数据库培训iGroup公司.ppt
ASCE-7-2005-美国荷载规范-(中文版)
ANSI ASCE CI 71-21 Identifying, Quantifying, and Proving Loss of Productivity.pdf
ASCE_7-10美国建筑荷载规范(中文版);.pdf
eclipse 配置AmaterasUML时需要的3个jar 包,以及配置文档 http://blog.csdn.net/asce1885/article/details/40744163
应用该方法对由国际结构控制协会与美国土木工程学会(IASC-ASCE)提出的健康监测Benchmark结构进行了分析。结果表明,两阶段损伤诊断方法能够;隹确地定出可能损伤单元的位置与损伤程度,识别结果与真实的损伤接近,...
集成的建模模板,基于代码的负载分配,高级分析选项,设计优化过程以及可定制的输出报告,均跨一个强大的平台进行协调,从而使SAP2000特别适用于专业人员。 SAP2000 v25新功能 1、用户界面 添加了树结构模型资源...
957/5000 结构安全和结构动力学有许多领域,通常需要计算随机变量函数的前几个统计矩。 通常的近似是泰勒展开法。 这种方法需要计算导数。 为了避免导数的计算,已经提出了概率矩的点估计。 然而,准确度非常低,...
(ASCE 7-10 “Minimum Design Loads for Buildings and Other Structures”)主要内容翻译与介绍 目录 0 规范内容简介1 1 总则7 1.1 适用范围7 1.2 定义和解释7 1.3 基本要求7 1.3.1 强度和刚度7 1.3.2 适用性8 ...
考虑3种对称损伤模式和1种非对称损伤模式,对由国际结构控制协会与美国土木工程学会(IASC-ASCE)提出的健康监测Benchmark模型结构第二阶段有斜撑的情况进行模拟分析。结果表明:该方法能够有效地识别出结构损伤单元...
针对美国IASC-ASCE的结构健康监测科研组提出的基准结构进行结构自振频率识别研究.神经网络训练时使用的数据为有限元程序计算所得出,将有损伤结构在环境激励下某点的加速度响应,通过快速傅立叶变换得到的离散频率响应...