选择法降序与折半查找法
来源:互联网 发布:淘宝订单监控 编辑:程序博客网 时间:2024/05/29 07:02
编写函数:(1)用选择法将数组排成降序的函数----SUB1;(2)用折半查找法查找某数是否在给定的数组当中的函数----SUB2。
主函数:输入任意10个正整数给数组,调用SUB1对数组进行排序,从键盘输入一个正整数,调用SUB2在数组中进行查找,找到后输出“OK”,没有找到则输出“NO FOUND!”。
选择法与冒泡排序的时间复杂度都是O(n2),在编写降序排列函数时,最后两数组元素的交换要在写在第一个for循环的外面,需要考虑。折半查找的方法也比较经典,代码如下:
#include<stdio.h>
#define N 10
void swap(int a[],int x,int y)//交换数组中的两个元素
{ int temp;
temp=a[x];
a[x]=a[y];
a[y]=temp;
}
void sub1(int a[])
{
int max;
int i,j;
for(i=0;i<N-1;i++) //控制比较次数
{ max=i;
for(j=i+1;j<=N-1;j++) //控制比较的数字
{ if(a[max]<a[j])
{ max=j;
}
}
if(max!=i)
swap(a,i,max);
}
}
int youxu(int b[],int n,int key)//用有序表查找,二分查找
{
int low=0;
int high=n-1;
int mid;
while (low<=high)
{
int mid=(low+high)/2;
if (key>b[mid])
{ high=mid-1;
}
else if (key<b[mid])
{ low=mid+1;
}
else
{
printf("ok!i find the number!");
return mid;
}
}
printf("i can not find the number!");
return 0;
}
void main()
{ int abc[]={2,3,5,6,1,6,5,3,4,9};
sub1(abc);
int x;
for(x=0;x<N;x++)
{printf("abc[%d]=%d\n",x,abc[x]);
}
int c;
c=youxu(abc,N,4);
printf("the number is abc[%d]\n",c);
}
- 选择法降序与折半查找法
- C语言 选择排序、折半查找法与二维数组
- JAVA冒泡与选择排序,折半查找
- JAVA冒泡与选择排序,折半查找
- 优化的选择排序和折半查找法
- java基础 选择排序、冒泡排序、折半查找法
- 折半查找---通过选择法排序对成绩进行排序
- 折半查找法(递归)
- 折半查找法
- 汇编折半查找法
- 折半查找法
- 折半查找法
- 折半法查找
- 折半查找法
- 折半查找法
- 折半查找法C++
- 折半查找法
- JAVA折半查找法
- IBM的LPI复习资料之LPI101-Topic102:Linux安装和包管理(3)管理动态链接库(查找和加载程序需要的动态链接库文件)
- spring报错Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace
- 恢复被GHOST格式化了整个硬盘的分区及数据的经验
- poj2362
- 出错:PhoneFactory.getDefaultPhone must be called from Looper thread
- 选择法降序与折半查找法
- delete 与 delete[] 的区别
- VC++获取屏幕大小第三篇 物理大小GetDeviceCaps 下
- hdu 1396
- java如何把时间格式转为毫秒
- Oracle 11g R1和R2官方下载地址
- 。。。
- chapter 1: windows错误处理
- win7安装vmware8.0后键盘鼠标不起作用