设a[0…n-1]是一个n个整数的已排序的数组,x是整数.请设计一个算法来确定在a[]中
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/25 07:40:23
设a[0…n-1]是一个n个整数的已排序的数组,x是整数.请设计一个算法来确定在a[]中
是否存在这样两个数,它们的和恰好是x
是否存在这样两个数,它们的和恰好是x
假设是增序的算法如下,时间复杂度为O(n):
#include
bool findTwoNumber(int array[],int len,int x)
{
int low = 0;
int high = len - 1;
while(low < high)
{
if ((array[low] + array[high]) > x) //如果和大于x说明当前最大数加上low之后的小数都比x大
high--;
else if ((array[low] + array[high]) < x) //如果和小于x说明当前最小数加上high之前的数都比x小
low++;
else
break;
}
if (low == high)
return false;
printf("array[%d] = %d,array[%d] = %d.",low,array[low],high,array[high]);
return true;
}
如果是减序修改循环体中的if语句修改为如下形式即可:
if ((array[low] + array[high]) < x)
high--;
else if ((array[low] + array[high]) > x)
low++;
else
break;
#include
bool findTwoNumber(int array[],int len,int x)
{
int low = 0;
int high = len - 1;
while(low < high)
{
if ((array[low] + array[high]) > x) //如果和大于x说明当前最大数加上low之后的小数都比x大
high--;
else if ((array[low] + array[high]) < x) //如果和小于x说明当前最小数加上high之前的数都比x小
low++;
else
break;
}
if (low == high)
return false;
printf("array[%d] = %d,array[%d] = %d.",low,array[low],high,array[high]);
return true;
}
如果是减序修改循环体中的if语句修改为如下形式即可:
if ((array[low] + array[high]) < x)
high--;
else if ((array[low] + array[high]) > x)
low++;
else
break;
设a[0…n-1]是一个n个整数的已排序的数组,x是整数.请设计一个算法来确定在a[]中
求算法问题:一个数组a中有n个整数,如何设计算法,使其中相同的数只有一个.并给出程序.
1.对一个整型数组A[n]设计一个排序算法.2.找出整型数组A[n]中元素的最大值和次最大值.3.A 是一个有
在数组中查找指定元素.输入一个正整数n(1≤n ≤10),然后输入n个整数存入数组a中,再输入一个整数x,在数组a中查找
用某种算法求中位数设X[0:n-1]和Y[0:n-1]为两个数组,每个数组中含有n个已排好序的数.设计一个算法,找出X和
设n是一个正整数,则10的n次方是( ) A.是一个n位的数 B.10后面有n个零的数 C.是一个(n+1)位数的整数
在c语言中,int a[10]表示a是一个整数有10个元素的数组?
任意给定一个大于1的整数n 设计一个算法求出n的所有因数
任意给定一个大于1的整数N,设计一个算法求出N的所有因数
任意给定一个大于1的整数n,设计一个算法求出n的所有因数
任意给定一个大于1的整数n,设计一个算法求出n的所有质因数
给定数组a[0:n-1],试设计一个算法,在最坏情况下用3n/2-2次比较找出a[0:n-1]中元素的最大值和最