C语言实现 二分查找 支持降序和升序
2013-11-27 23:18
405 查看
// Test2.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#define N 5
/*
* 对降序数组进行二分查找
*/
int main(int argc, char* argv[])
{
int a
;
int i,k;
int low=0,high=N-1,mid;
bool ret = false;
printf("请输入一组有序的数字:\n");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
printf("输出输入的有序数字:\n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
printf("\n请输入查找的数字:");
scanf("%d",&k);
if( a[low] > a[high] )//如果数组是降序的,使用下面方法
{
while(low<=high)
{
mid=(low+high)/2;
if( k > a[mid])
{
high = mid - 1;
}
else if( k < a[mid])
{
low = mid + 1;
}
else
{
printf("要查找的数字在数组的第%d位\n", mid);
ret = true;
break;
}
}// end while
}
else//如果数组是升序的,使用下面的方法
{
while(low<=high)
{
mid=(low+high)/2;
if( k < a[mid])
{
high = mid - 1;
}
else if( k > a[mid])
{
low = mid + 1;
}
else
{
printf("要查找的数字在数组的第%d位\n", mid);
ret = true;
break;
}
}// end while
}
if(ret == false){
printf("%d的值未找到\n",k);
}
return 0;
}
//
#include "stdafx.h"
#define N 5
/*
* 对降序数组进行二分查找
*/
int main(int argc, char* argv[])
{
int a
;
int i,k;
int low=0,high=N-1,mid;
bool ret = false;
printf("请输入一组有序的数字:\n");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
printf("输出输入的有序数字:\n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
printf("\n请输入查找的数字:");
scanf("%d",&k);
if( a[low] > a[high] )//如果数组是降序的,使用下面方法
{
while(low<=high)
{
mid=(low+high)/2;
if( k > a[mid])
{
high = mid - 1;
}
else if( k < a[mid])
{
low = mid + 1;
}
else
{
printf("要查找的数字在数组的第%d位\n", mid);
ret = true;
break;
}
}// end while
}
else//如果数组是升序的,使用下面的方法
{
while(low<=high)
{
mid=(low+high)/2;
if( k < a[mid])
{
high = mid - 1;
}
else if( k > a[mid])
{
low = mid + 1;
}
else
{
printf("要查找的数字在数组的第%d位\n", mid);
ret = true;
break;
}
}// end while
}
if(ret == false){
printf("%d的值未找到\n",k);
}
return 0;
}
相关文章推荐
- C语言实现直接插入排序,冒泡排序以及二分查找(巩固理解记忆)
- c语言实现二分查找
- C语言二分查找算法及实现代码
- C语言数据结构中二分查找递归非递归实现并分析
- 二分查找算法实现(C语言)
- C语言链表中数组实现数据选择排序,升序、降序功能主要难点
- 二分查找的递归和非递归算法(C语言实现)
- 通过orderby关键字,LINQ可以实现升序和降序排序。LINQ还支持次要排序。
- C语言链表中数组实现数据选择排序,升序、降序功能主要难点
- C语言实现直接插入排序,冒泡排序以及二分查找(巩固理解记忆)
- C语言实现二分查找
- 插入排序算法+优化 (二分查找优化有序部分)C语言实现
- C语言:递归和非递归实现二分查找
- 二分查找C语言实现
- C语言调用库函数实现二分查找
- C语言使用stdlib.h库函数的二分查找和快速排序的实现代码
- c语言二分查找泛型实现
- c语言:代码实现折半(二分)查找
- C语言 ---- 递归实现二分查找
- 顺序表查找(顺序查找、二分查找) C语言实现