用插入法对一组数据进行
//这是一个C++程序,你可以直接粘贴到电脑上面运行;记得采纳哦!!!!! #include iostream using namespace std; void main() { const int n=5;//这个定义常变量,方便更改数字的个数; double a[n],te
输入以下公式,然后向右向下填充公式
=INDEX($A1:$E1,MATCH(LARGE($A$2:$E$2,COLUMN(A1)),$A$2:$E$2,0))
详见附图
折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。它的基本思想是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如果xa[n/2],则我们只要在数组a的右半部继续搜索x。二分搜索法的应用极其广泛,而且它的思想易于理解,但是要写一个正确的二分搜索算法也不是一件简单的事。第一个二分搜索算法早在1946年就出现了,但是第一个完全正确的二分搜索算法直到1962年才出现。Bentley在他的著作《Writing Correct Programs》中写道,90%的计算机专家不能在2小时内写出完全正确的二分搜索算法。问题的关键在于准确地制定各次查找范围的边界以及终止条件的确定,正确地归纳奇偶数的各种情况,其实整理后可以发现它的具体算法是很直观的,我们可用C++描述如下: template int BinarySearch(Type a[],const Type& x,int n) { int left=0; int right=n-1; while(left<=right){ int middle=(left+right)/2; if (x==a[middle]) return middle; if (x>a[middle]) left=middle+1; else right=middle-1; } return -1; } 模板函数BinarySearch在a[0]<=a[1]<=...<=a[n-1]共n个升序排列的元素中搜索x,找到x时返回其在数组中的位置,否则返回-1。容易看出,每执行一次while循环,待搜索数组的大小减少一半,因此整个算法在最坏情况下的时间复杂度为O(log n)。在数据量很大的时候,它的线性查找在时间复杂度上的优劣一目了然。 选择排序 基本思想是:每次选出第i小的记录,放在第i个位置(i的起点是0,按此说法,第0小的记录实际上就是最小的,有点别扭,不管这么多了)。当i=N-1时就排完了。 直接选择排序 直选排序简单的再现了选择排序的基本思想,第一次寻找最小元素的代价是O(n),如果不做某种特殊处理,每次都使用最简单的寻找方法,自然的整个排序的时间复杂度就是O(n2)了。 冒泡法 为了在a[1]中得到最大值,我们将a[1]与它后面的元素a[2],a[3],...,a[10]进行比较。首先比较a[1]与a[2],如果a[1] 为了在a[2]中得到次大值,应将a[2]与它后面的元素a[3],a[4],...,a[10]进行比较。这样经过8次比较,在a[2]是将得到次大值。 如此继续,直到最后a[9]与a[10]比较,将大数放于a[9],小数放于a[10],全部排序到此结束。 从上面可以看出,对于10个数,需进行9趟比较,每一趟的比较次数是不一样的。第一趟需比较9次,第二趟比较8次,...,最后一趟比较1次。 以上数组元素的排序,用二重循环实现,外循环变量设为i,内循环变量设为j。外循环重复9次,内循环依次重复9,8,...,1次。每次进行比较的两个元素,第一个元素与外循环i有关的,用a[i]标识,第二个元素是与内循环j有关的,用a[j]标识,i的值依次为1,2,...,9,对于每一个i, j的值依次为i+1,i+2,...。
版权声明:部分内容由互联网用户自发贡献,如有侵权/违规,请联系删除
本平台仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接地址:/dsj/215694.html