C語(yǔ)言設(shè)計(jì)題:有15個(gè)數(shù)存放在一個(gè)數(shù)組中,輸入一個(gè)數(shù)要求用折半查找法找出該數(shù)是數(shù)組中的第幾個(gè)元素的值,如
/*
你好:
折半查找法找出該數(shù)是數(shù)組中的
第幾個(gè)
元素的值
這個(gè)要找的值是數(shù)組元素排序之后的位置
還是排序之前的
因?yàn)檎郯氩檎乙髷?shù)組是有順序的
我調(diào)好了一個(gè)輸出的是排序之后的
先讓你看看結(jié)果,如果是你要的,
我在給你代碼 呵呵
*/
else if(number<a[mid]) bott=mid;
else top=mid;
小弟猜下,無(wú)怪。
假如 bott = 0 , mid = 2 , 要找的是在第1個(gè)
則 top = mid - 1 = 1
mid = ( bott + top ) / 2 = 0
mid < 1
bott = mid + 1 = 1
mid = ( bott + top) ./ 2 = 0
死循環(huán)哦。。。。。。呵呵
#include<stdio.h>
#define N 15
int main()
{
int a[N]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1},i,l,h,m,n,f=1;
scanf("%d",&n);
l=0;
h=N-1;
while(l<=h)
{
m=(l+h)/2;
if(n>a[m])
h=m-1;
else if(n<a[m])
l=m+1;
else if(n==a[m])
{
f=0;
printf("%d : %d\n",m+1,n);
break;
}
}
if(f)printf("不存在此數(shù)\n");
return 0;
}
折半查找首先要是順序存儲(chǔ)結(jié)構(gòu),也就是先要排序,然后使用折半查找很容易的,對(duì)比第N/2+1的數(shù),要是打了往后找,小了往前找,注意要使用遞歸,
else if(number<a[mid]) bott=mid;
else top=mid;
小弟猜下,無(wú)怪。
假如 bott = 0 , mid = 2 , 要找的是在第1個(gè)
則 top = mid - 1 = 1
mid = ( bott + top ) / 2 = 0
mid < 1
bott = mid + 1 = 1
mid = ( bott + top) ./ 2 = 0
死循環(huán)哦。。。。。。呵呵
#include<stdio.h>
#define N 15
int main()
{
int a[N]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1},i,l,h,m,n,f=1;
scanf("%d",&n);
l=0;
h=N-1;
while(l<=h)
{
m=(l+h)/2;
if(n>a[m])
h=m-1;
else if(n<a[m])
l=m+1;
else if(n==a[m])
{
f=0;
printf("%d : %d\n",m+1,n);
break;
}
}
if(f)printf("不存在此數(shù)\n");
return 0;
}
折半查找首先要是順序存儲(chǔ)結(jié)構(gòu),也就是先要排序,然后使用折半查找很容易的,對(duì)比第N/2+1的數(shù),要是打了往后找,小了往前找,注意要使用遞歸,
c語(yǔ)言 要求由大到小排列15個(gè)數(shù)
{ a[i]=rand()%500; } printf("\\n"); printf("the original data is:\\n");\/\/你所定義的數(shù)組大小為15.所以你的數(shù)組地址為0~14將16處全部改成15 for(i=0;i<15;i++) { printf("%5d",a[i]); }\/\/冒泡排序中內(nèi)側(cè)的循環(huán)才是比較需要的。 for(i=0;i<15;...
用C語(yǔ)言給15個(gè)數(shù)字排序,可用數(shù)組,指針,函數(shù)等
{ int tmp=array[i]; j=i; while(array[j-1]>tmp&&j>0) { array[j]=array[j-1];j--;} array[j]=tmp; } for(i=1;i<15;i++) printf("%d\\n",array[i]); return 0;}
初一Free pascal語(yǔ)言題目
題3、有15個(gè)數(shù)按由小到大順序存放在一個(gè)數(shù)組中,輸入一個(gè)數(shù),要求找出該數(shù)是數(shù)組中第幾個(gè)元素的值。如果該數(shù)不在數(shù)組中,則打印出“NO”。題4、如果矩陣A中存在這樣的一個(gè)元素A[i,j]滿足下列條件:A[i,j]是第i行中值最小的元素,且又是第j列中值最大的元素,則稱之為該矩陣的一個(gè)馬鞍點(diǎn)。編寫(xiě)一個(gè)...
C語(yǔ)言程序設(shè)計(jì)實(shí)現(xiàn)任一字符和字符串長(zhǎng)度的輸出,其中字符和字符串內(nèi)容由...
輸入任意長(zhǎng)度字符串,并輸出打印字符串及其長(zhǎng)度。include<stdio.h>#include<malloc.h>#include<conio.h>char *input();\/\/輸入任意長(zhǎng)度字符串(可包含空格),回車確認(rèn),返回輸入的字符串int getLen(char *str);\/\/通過(guò)指針獲取字符串長(zhǎng)度void meError(void *p);\/\/內(nèi)存申請(qǐng)失敗int main(){ char ...
15個(gè)數(shù)組宏排列
根據(jù)組合公式可以計(jì)算:1、如果每組數(shù)中,5個(gè)數(shù)字都不能有重復(fù),那組合數(shù)=(15×14×13×12×11)÷(1×2×3×4×5)=3003 種。2、如果每組數(shù)中,5個(gè)數(shù)允許有重復(fù)(如15,15,15,15,15,),總組合數(shù)=15*15*15*15*15=759375。不知道您所謂的重復(fù)抽取是指第2種情況里面的單個(gè)數(shù)字重復(fù),...
WPS中如何用VBA實(shí)現(xiàn)1-15個(gè)數(shù)字放入數(shù)組中,單擊A1單元格以5個(gè)排列顯示在...
Excel怎樣從數(shù)據(jù)集選r個(gè)數(shù)據(jù)排列組合列表(一)
c語(yǔ)言有15個(gè)數(shù),將他們按從大到小進(jìn)行排序然后從鍵盤輸入一個(gè)數(shù)字利用半...
}void getArr(int* p,int size){srand(time(NULL));for(int i=0;i<size;i++)p[i]=rand()%50;}int main(int argc,char *argv[]){int arr[15];int n;int *p;char ch;getArr(arr,15);printf("the init arr:");for(int i=0;i<15;i++)printf("%d ",arr[i]);qsort(...
請(qǐng)幫我做一個(gè)C語(yǔ)音編程題。 對(duì)15個(gè)數(shù)進(jìn)行排序,按從小到大的順序輸出...
printf("Begin:\\n");for(i=0;i<15;i++)printf("%d ",a[i]);printf("\\nAfter:\\n");for(i=0;i<14;i++)for(j=0;j<14-i;j++)if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;} for(i=0;i<15;i++)printf("%d ",a[i]);printf("\\n");return 0;} ...
用java編寫(xiě)一個(gè)程序,將10個(gè)整數(shù)放到一維數(shù)組中,并按從大到小排序后輸 ...
在Java中,編寫(xiě)一個(gè)程序,首先需要?jiǎng)?chuàng)建一個(gè)一維整數(shù)數(shù)組。例如,創(chuàng)建一個(gè)包含10個(gè)整數(shù)的數(shù)組,如(1,3,5,12,4,6,8,9,15,11)。接下來(lái),需要對(duì)這個(gè)數(shù)組進(jìn)行排序,按照從大到小的順序。這里可以使用快速排序算法或其他排序算法來(lái)完成。在Java中,可以利用Arrays類中的sort方法來(lái)實(shí)現(xiàn)排序,但該方法...
c語(yǔ)言 一題 某班 15人 ,年齡為 18歲-20歲求個(gè)年齡段的人數(shù)
LZ,估計(jì)你是位初學(xué)者,以下是最詳盡最簡(jiǎn)單的標(biāo)準(zhǔn)C語(yǔ)言程序,你肯定能看懂,祝你的C語(yǔ)言學(xué)的越來(lái)越好;注意:此代碼可直接粘貼到VC當(dāng)中去運(yùn)行,將不會(huì)出現(xiàn)編譯錯(cuò)誤;include<stdio.h> void main(){ int a[15],sum=0,i;\/\/數(shù)組a用來(lái)存放15個(gè)學(xué)生的年齡,\/\/sum用來(lái)計(jì)算18——20歲年齡個(gè)數(shù) for(i...
相關(guān)評(píng)說(shuō):
商都縣轉(zhuǎn)動(dòng): ______ #include#define N 15int main(){ int a[N],i,key,mid,star=0,end=N-1; printf("ent...
商都縣轉(zhuǎn)動(dòng): ______ #include#define N 15 int main() { int i,number,top,bott,mid,loca,a[N],flag=1,sign; char c; printf("enter date:\n"); scanf("%d",&a[0]); i=1; while(i {scanf("%d",&a[i]); if(a[i]>=a[i-1]) i++; else printf("enter this date again:\n"); } printf("\n"); for(i=...
商都縣轉(zhuǎn)動(dòng): ______ C程序:main() { int f[20],i; f[0]=1; f[1]=1; for(i=2;i<15;i++) { f[i]=f[i-1]+f[i-2]; } for(i=0;i<15;i++) printf("%d ",f[i]; }
商都縣轉(zhuǎn)動(dòng): ______ 取出低(n+1)/2的數(shù)和你輸入的數(shù)對(duì)比,如果你輸入的數(shù)小的話到右邊去查找,如果大的話到左邊去查找.這個(gè)函數(shù)遞歸下去.如果相等的話返回索引.如果兩次查到的都是同一個(gè)數(shù)的話就證明沒(méi)有這個(gè)數(shù),返回查找不到.
商都縣轉(zhuǎn)動(dòng): ______ #include"stdio.h"int main(){ int b,i,j,s=0,a1[15]; //由于需要知道結(jié)果為最初數(shù)組的第幾個(gè)數(shù),所以要備份數(shù)組a[15] int a[15]={-4,28,12,3,56,77,23,12,34,-10,12,13,25,21,65}; //如題所要求,數(shù)組在此隨機(jī)賦初值 for(i=0;i<15;i++) //備份數(shù)組a[...
商都縣轉(zhuǎn)動(dòng): ______ 1. main( ) { int i,j,number; int a[11]={1,4,6,9,13,16,19,28,40,100}; printf("array a:\n"); for(i=0;i<10;i++) printf("%d ",a[i]); printf("\n"); printf("Insert data:"); scanf("%d",&number); i=0; while (a[i]<number&&i<10) i++; for(j=9;j>=i;j--) a[j+1]=a[j]; ...
商都縣轉(zhuǎn)動(dòng): ______ #include<stdio.h> #define N 15 main() { int i,j,number,top,bott,min,loca,a[N],flag; char c; printf("輸入15個(gè)數(shù)(a[i]>a[i-1])\n"); scanf("%d",&a[0]); i=1; while(i<N) {scanf("%d",&a[i]); if(a[i]>=a[i-1]) i++; else { printf("請(qǐng)重新輸入a[i]"); ...
商都縣轉(zhuǎn)動(dòng): ______ int binary_search(int val){ int arr[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}; int a = 0, b = 14, m; while( a <= b){ m = (a+b)/2; if(arr[m] == val) return m; if(arr[m] > val){ b = m-1; }else{ a = m+1; } } std::cout << "無(wú)此數(shù)" << std::endl; return -1; }
商都縣轉(zhuǎn)動(dòng): ______ #define LEN 15 int binary_search(int *arr, int x) { int low = 0, high = LEN -1, mid; while(low <= high){ mid = (low + high)/2 ; if(x == arr[mid]) return mid; if(x < arr[mid]) high= mid -1; else low=mid+1; } return -1; } int main(int argc, char** argv) { if (argc!...
商都縣轉(zhuǎn)動(dòng): ______ 第二題:#include main() { int a[10],i,j,min,t; printf("輸入十個(gè)數(shù)字:"); for(i=0;i scanf("%d",&a[i]); printf("\n"); for(i=0;i { min=i; for(j=i+1;j if(a[min]>a[j]) { min=j; } t=a[min]; a[min]=a[i]; a[i]=t; } printf("排序后:"); for (i=0;i printf("%d ",a[i]); printf("\n"); }