恩,昨天弄了哈二分查找,先来回忆一下二分查找的重要的知识点
1.有序的数组才能使用二分查找
2.二分查找法的效率很高,2的对数来得到二分法的查找次数。
3.二分查找法的原理
从一个有序数组中查找一个值,首先得到该数组的长度一半的(也就是得到该有序数组的中间值)的值,跟要查找的值进行比较,如果该值等于要查找的值,那么就结束了,如果该值大于要查找的值,那么我们的查找范围缩小,也就是说,这时我们要把我们查找的最大的的下标的值设置成为刚得到的下标。反之,我们则把最小的下标设置成为刚得到的下标值。按照这样的循环方式,最后查找到要查找的值,如果该数组中确实不存在该值,最后我们的最小下标会大于最大下标。此时查找就应该结束了。
核心代码如下:
while(true){
current = (min + max)/2;
if(a[current] == searchKey){
return current;
}else if(min>max){
return nElems;
}else if(a[current] >searchKey){
max = current-1;
}else if(a[current] <searchKey){
min = current+1;
}
}
上面说到的是二分查找法,二分查找法执行的一个前提是,有序数组,那么我们现在要说的就是怎么让一个数组变得有序起来—排序。
排序有多种,下面慢慢道来。
一:冒泡排序—最简单,但应该是最慢的排序
实现代码:
for(int out = a.length-1; out>1 ; out--){//排完一次,确定一个最大值,之后就少排一次
for(int in = 0 ; in < out; in++){//循环比较内层,根据外层比较的长度变小,相应的内层比较次数变少
if(a[in]>a[in+1]){
int temp = a[in];
a[in] = a[in+1];
a[in+1] = temp;
}
}
}
从上面可以看到,如果是10个的数据的数组,他的比较次数应该是:9+8+7+……+1=45
也即:(N-1)+(N-2)+……+1=N*(N-1)/2。效率可想而知。
(未完待续)
分享到:
相关推荐
以上就是高二数学必修3第一章算法初步的知识点概述,包括秦九韶算法的计算过程和直接插入排序与冒泡排序的基本原理。掌握这些基础知识,不仅有助于解决数学问题,也为未来深入学习计算机科学中的算法打下坚实基础。...
这篇文档是关于算法初步的练习题集,涵盖了选择题、填空题和解答题,主要涉及算法的基础概念、数据处理和排序算法等知识点。 一、选择题知识点: 1. 算法可以用多种方式描述,如自然语言、图形、伪代码等,所以A和B...
在实际应用中,根据数据特点选择合适的排序算法至关重要,例如,希尔排序对于大规模数据的初步排序非常有效,而冒泡排序则适合小规模或部分有序的数据。熟练运用这些排序算法,能帮助我们编写出更加高效和优化的代码...
**算法初步课件详解** 算法是计算机科学的基础,它是一系列解决问题或执行任务的精确步骤。在本“初步算法课件”中,我们将深入探讨算法的基本概念、设计思想以及常见算法类型,帮助初学者建立起坚实的算法基础。 ...
快速排序在大多数情况下表现优秀,而希尔排序则适用于处理大规模数据时的初步排序。理解并掌握这些排序算法,对于提升编程能力及解决实际问题具有重要意义。在C语言中实现这些算法,可以帮助我们更好地理解其内部...
《算法初步练习题》 在IT领域,算法是解决问题的核心工具,它是一系列明确的步骤,用于解决特定问题或执行特定任务。对于初学者来说,掌握基础算法是至关重要的,因为这不仅能提升编程能力,还能培养逻辑思维和问题...
在算法初步的学习中,学生会接触到基础的算法类型,如排序算法(冒泡排序、选择排序、插入排序等)和查找算法(线性查找、二分查找等)。此外,递归、分治策略、贪心算法和动态规划等高级算法思想也会有所涉及。这些...
高中数学的第二章“算法初步”是针对高考生的重要学习内容,主要涵盖了算法的基本思想、逻辑结构以及如何将其转化为程序语句。此章节的核心在于理解算法的内涵,体验算法解决问题的过程,以及掌握程序框图的设计。 ...
这些是高一数学算法初步试题中涉及的主要知识点,包括算法的基本结构、变量交换、条件语句的应用、循环结构的理解、四进位制转换、数值比较、秦九韶算法的运用以及冒泡排序等。对于解答题,学生需要具备分析问题、...
【算法初步】是高中数学必修三中的一个重要章节,它主要介绍了算法的基本概念、表示方法以及简单的算法设计与分析。算法在计算机科学中扮演着核心角色,是解决问题的基础工具。本章的学习旨在培养学生的逻辑思维能力...
总结,C语言实现冒泡Shell排序算法是将冒泡排序与Shell排序结合,先用Shell排序优化初步排序,再用冒泡排序进行微调,以达到更好的性能。理解并掌握这些基础排序算法有助于我们更好地理解和设计更复杂的排序算法。在...
- **M准则**:M准则通常与小区的信号质量有关,它衡量了当前小区的接收信号强度与相邻小区的信号强度之差,用于初步筛选可能的切换目标。 - **K准则**:K准则涉及系统的负荷情况,考虑了小区的容量和当前用户数量...
1. **排序算法**:排序算法是计算机科学中最基本的数据处理技术之一,其目的是对一组数据进行排列,常见的排序算法有冒泡排序、选择排序、插入排序、快速排序、归并排序和堆排序等。在实际问题中,如处理学生成绩...
【算法初步】是高中数学中的一个基础概念,主要探讨如何用明确的步骤解决问题的方法。在高一阶段,学生们会接触到一些基本的算法思想和简单的算法实现。这份文档名为"高一数学算法初步综合训练.doc",显然是为了帮助...
文档标题和描述提到了"高一数学算法初步综合训练",这意味着内容主要针对高中一年级学生,涉及的是数学课程中的算法初步知识。这部分内容通常包括基本的编程概念、流程控制(如循环)、算法分析等,目的是让学生理解...
- 第6题的算法是经典的冒泡排序或选择排序的简化版本,其目的是将输入的a, b, c三个数按照从大到小的顺序输出。 5. **分段函数的实现**: - 第7题的算法对应于分段函数y = x (x >= 0) 和 y = x^2 (x ),当输入x值...
【高中数学算法初步】是针对高中生的一门课程,旨在引导学生了解并掌握基本的算法概念,为后续的计算机科学和数学学习打下基础。新人教A版必修课程中的算法内容通常包括以下几个方面: 1. **算法定义与性质**: - ...
算法初步知识点总结 算法是解决某一类问题的明确和有限的步骤。它具有确定性、逻辑性和有穷性三个特征。在计算机程序设计中,算法可以编写成计算机程序,让计算机执行并解决问题。 在算法设计中,程序框图是一个...
通过设计和实现排序算法,学生们可以深入理解函数的运用,并初步接触软件工程方法,增强软件系统分析能力。此外,此过程还将培养学生的程序文档建立和归纳总结技巧,使他们能有效地解决实际的信息管理系统中的排序...