随笔分类 - 数组
摘要:OK,又到了讲排序的时候了,今天主要学习了一下二分查找和排序,其实二分法的本质就是分区间,比如对于一个已经排序好的数列或者文件中找一个字,那么本来可以一个个从头到尾找下去,但是我们可以把他分成两部分,和中间值比较,如果小于中间值呢,就到前半部分,大于呢,就在后半部分找,最后的目的就是只有两个值能和要找的数据比较,下面贴算法:void fn_erfen(int *p,int count,int val){int beigin=0,end=count-1,mid=0 while(begin<end-1) {mid =begin+(end-begin)/2; if(p[mid]>val)
阅读全文
posted @ 2012-02-13 23:56
RINA
摘要:int num_max(int *p,int count)//求一个数组最大的字数组{ int sum=0;int max=0;/* 其实思路很简单,字数组嘛,只要知道字数组的边界,就可以循环算了,第一次下边界i=0,上边界从i+1一直到n-1即可,然后在这个边界里面求和就OK啦*/ for(int i=0;i<count;i++) { for(int j=i;j<count;j++) {for( int k=i;k<j;k++) {sum+=p[k];} if(sum>max) max=sum; ...
阅读全文
posted @ 2012-02-05 23:44
RINA
摘要:问题描述: 现要求产生 0~n-1 范围内的 m 个随机整数的有序列表,且不允许重复,m <= n。 考虑到 n 的值可能很大,而通常 C/C++ 提供的随机数产生器所能返回的随机数在 [0,RAND_MAX],其中,RAND_MAX 为 0x7FFF。也就是说只有 15 位的随机性。因此,我们需要要有自己的随机数产生器,以便能够返回更多位数的随机数,通常为 30 位。下面的函数可以满足我们的要求:int bigrand(){return (RAND_MAX * rand() + rand());}注意,这里也可以采用将第一个 rand() 的返回值左移 15 位,然后加上第二个 ran
阅读全文
posted @ 2012-02-05 01:32
RINA
摘要:给出一个随机数组,求里面连续数最大的 1 int main()//求出随机数组连续三个数中最大的 2 { //随机数 3 int get_rand(); 4 int max(int *p,int count); 5 int j=0; 6 int i=0; 7 int c=0; 8 srand(time(0)); 9 10 int a[10];11 int b[100];12 for( i=0;i<10;i++)13 a[i]=get_rand();14 for(i=0;i<9;i++)15 ...
阅读全文
posted @ 2012-02-04 11:13
RINA
摘要:以前老是要用手动输入很多数组,今天巩固了下随机数组的生成。因为用到了time(),所以加头文件 #include<time>View Code 1 int main() 2 { //随机数 3 int get_rand(); 4 srand(time(0)); 5 /*洒下种子是为了每次生成的随机数组不一样,每次不一样,不然的话生成的都一样*/ 6 int a[10]; 7 for(int i=0;i<10;i++) 8 a[i]=get_rand(); 9 for(int i=0;i<10;i++)10 cou...
阅读全文
posted @ 2012-02-03 21:38
RINA
浙公网安备 33010602011771号