将一个以经排列好的数列(从小到大)从中间拆分并进行比较,再将目标所在的一部分数组重新当作新的数组拆分直到找到所需数的方法。
二分法具体过程先定义一个数组str[n],令left=0,right=n-1,则mid = (low+ high) /2 ,将需寻找的数m与str[mid]进行比较,若m>str[mid]则舍去左边令left=mid+1,相反则right=mid-1.随后再次重复进行比较直到得到寻找数为止。代码如下;
quickSort(0,x,str1); for(i=0;i= left) { mid = (right + left)/2; if(str1[mid] < str2[i] ) { left = mid + 1; } else if(str1[mid] > str2[i]) { right = mid - 1; } else if(str1[mid] == str2[i]) { judge = 1; printf("YESn");//询问数组存在 break; } } if (judge != 1) { printf("NOn");//询问数字不存在 } if (judge == 1) { judge = 0; } } return 0; } `
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)