二分法查随机数的第几个

    技术2022-05-20  60

    #include   <iostream> #include   <cmath> #include   <ctime> #include "time.h"#define  N 120using   namespace   std; //   使用RAND_MAX void   main(){  srand(time(0));     __int64  i,a=0,b=N,c=N/2,k[N],count; int flag=0; clock_t start,finish; double during; start=clock(); for (i=0;i<N;i++) {

      k[i]=(double)rand()/RAND_MAX*N;//产生0-1直接均匀的double型随机数再乘以N // printf("%ld ",k[i]); } finish=clock(); during=(double)(finish-start)/CLOCKS_PER_SEC; printf("使用的时间为:%.2f/n",during);  while(a<b) {  count=0;  for (i=0;i<N;i++)  {   if (k[i]<=c)   {    count++;   }   if (count==N/2)   {    b=c;    c=(a+b)/2;       break;    }

      }  if (count<N/2)  {   a=c;   c=(a+b)/2;   if (a+1==b)   {    c=b;    break;   }  } } printf("第N/2个数是%ld/n",c);  printf("使用的时间为:%.2f/n",during);

    }


    最新回复(0)