|
摘要:#include int main(int argc, const char * argv[]){ int a[10]; int i, j, k, m; //循环变量,中间变量 printf("请输入10个数字,数字之间用空格隔开!\n"); for (i=0; ia[j]) { k = j; printf("第%d次遍历,找到的最小数:%d\n",i+1, a[k]); } } printf("第%...
阅读全文
摘要:这个算法比较复杂!关键字:构造哈希函数,按地址查找。# 哈希查找是使用给定数据构造哈希表,然后在哈希表上进行查找的一种算法。先给定一个值,然后根据哈希函数求得哈希地址,再根据哈希地址查找到要找的元素。# 哈希查找是通过数据元素的存储地址进行查找的一种算法。## 算法步骤: (1)用给定的哈希函数构造哈希表。 (2)根据选择的冲突处理方法解决地址冲突。 (3)在哈希表的基础上执行哈希查找。以下代码是:根据提示输入学生信息,然后输入查找学生的学号,如果有的话,输出学生姓名和位置,如果没有的话,提示没有该学生的信息。View Code #import <Foundation/Foundat..
阅读全文
摘要:秘诀:先分块,再匹配。分而治之步骤:1.先取各块中的最大关键字构成一个索引表。2.查找分为两部分,先对索引表进行二分查找或是顺序查找,以确定待查记录在哪一块中。3.然后,在已经确定的块中用顺序法进行查找。#importstructindexBlock//定义块的结构{intkey;intstart;intend;}indexBlock[4];//定义结构体数组intmain(intargc,constchar*argv[]){@autoreleasepool{intj=-1,k,x;inta[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};printf(&quo
阅读全文
摘要:折半查找秘诀:折半,匹配中间值,折半,匹配中间值,折半,匹配中间值.... ,等于中间值,跳出,找到数据。大致步骤: 设3个变量low,mid,high,分别保存数组元素的开始、中间和末尾的序号。假定有10个元素,开始时让low=0,high=9,mid = (low+high)/2=4. 1.如果序号为mid的数组元素的值与x(要找的数)相等,表示查找到了数据,返回该数据的序号mid. 2.如果x<a[mid],表示要查找的数据x位于low与mid-1之间,就不需要再去查找mid与high序号之间的元素了。因此,将high变量的值改为mid-1,重新查找low与mid-1(即high变
阅读全文
摘要:学知识一定要记住口诀,才能学的好,学的快!分享一篇最简单的查找算法--顺序查找。顺序查找秘诀:遍历数组元素,逐个查找,匹配#import<Foundation/Foundation.h>intmain(intargc,constchar*argv[]){@autoreleasepool{inti,x,n=0;inta[10];printf("请输入10个数字!\n");for(i=0;i<10;i++){scanf("%d",&a[i]);}printf("请输入要查找的数:");scanf("%d
阅读全文
摘要:快速排序的基本思想是:通过一趟数据比较和交换,将要排序的数据分成前后两部分,其中一部分的数据都比另外一部分的数据都要小,然后,再按这种方法对分开的两部分数据分别进行一次快速排序,依次执行下去,直到整个序列有序为止。 例如,有无序序列{a1,a2,a3,a4,……,an},使用快速排序的过程为: 首先,任选一个数据(通常选第一个元素数据a1)作为关键数据。然后,将所有比它小的元素都交换到它前面,所有比它大的元素都交换到它后面,执行这样一次比较和交换过程称为一趟快速排序。一趟快速排序的算法描述如下: 1)设置两个变量i和j,排序初始时设置初始值为:i=1,j=n-1; 2...
阅读全文
摘要:实现规则为:首先制定排序规则,然后,依次两两比较待排序的数据,若不符合排序规则,则进行交换,然后依次比较下去,直到全部元素排列有序为止。 示例1:有如下一组数据{85,279,948,521,616,888},按照从大到小的顺序排列,使用冒泡排序,首先执行第一趟交换,过程如图所示。 经过五趟数据比较与交换后,数据顺序变为由大到小的有序序列。从而实现了使用冒泡排序的目的。其一般表达函数为: void BubbleSort(dataList r[], int n) { int loop1, loop2, temp; f...
阅读全文
摘要:1.算法(程序 = 数据结构 + 算法)计算算法主要分为两类:数值运算算法和非数值运算算法。如:1+3+5+7+……+99+100 对于这样的累加计算,可以使用下面的C语言程序实现: int loop = 0, sum = 0; for(loop=1;loop<100;loop=loop+2) { sum = sum + loop; } sum = sum + 100; 如果利用数学算法,可以使程序效率提高近10倍。数学运算中,可以使用和差算法计算这样的加和运算,公式为: sum = n*(a1+an)/2 使用C语言实现的程序为: int sum = 0; ...
阅读全文
|