概述
代码实现
1.C语言
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 10
#define SWAP(x,y) {int t; t = x; x = y; y = t;} //元素 交换,也可定义在函数语句中
void quicksort(int[], int, int);
int bisearch(int[], int);
int main() {
int number[MAX] = {0};
int i, find;
srand(time(NULL));//控制随机时间产生数字 (相当于产生随机数)
for(i = 0; i < MAX; i++){
number[i] = rand() % 100;
}
quicksort(number, 0, MAX-1);
printf("n例如以下元素:nn");
for(i = 0; i < MAX; i++){
printf("%d ", number[i]);
}
printf("nn请输入您要查找哪一个数字:");
scanf("%d", &find);
if((i = bisearch(number, find)) >= 0){
printf("n数字位于第 %d 个位置。n", i+1);
}else{
printf("n找不到指定数!");
}
printf("n");
return 0;
}
int bisearch(int number[], int find){
int low, mid, high;
low = 0;
high = MAX - 1;
while(low <= high){
mid = (low+high) / 2;
if(number[mid] < find){
low = mid+1;
}else if(number[mid] > find){
high = mid - 1;
}else
return mid;
}
return -1;
}
void quicksort(int number[], int left, int right){
int i, j, k, s;
if(left < right){
s = number[(left+right)/2];
i = left - 1;
j = right + 1;
while(1){
while(number[++i] < s) ; // 向右找
while(number[--j] > s) ; // 向左找
if(i >= j){
break;
}
//交换元素
SWAP(number[i], number[j]);
}
quicksort(number, left, i-1); // 对左边进行递回
quicksort(number, j+1, right); // 对右边进行递回
}
}
2.C++
#include <time.h>
#include<stdlib.h>
#define MAX 10
#define SWAP(x,y) {int t; t = x; x = y; y = t;} //元素 交换,也可定义在函数语句中
#include<iostream>
using namespace std;
void quicksort(int[], int, int);
int bisearch(int[], int);
int main() {
int number[MAX] = {0};
int i, find;
srand(time(NULL));//控制随机时间产生数字 (相当于产生随机数)
for(i = 0; i < MAX; i++){
number[i] = rand() % 100;
}
quicksort(number, 0, MAX-1);
cout<<"n例如以下元素:nn";
for(i = 0; i < MAX; i++){
cout<<number[i]<<' ';
}
cout<<"nn请输入您要查找哪一个数字:";
cin>>find;
if((i = bisearch(number, find)) >= 0){
cout<<"n数字位于第 "<<i+1<<"个位置。n";
}else{
cout<<"n找不到指定数!"<<endl;
}
cout<<endl;
return 0;
}
int bisearch(int number[], int find){
int low, mid, high;
low = 0;
high = MAX - 1;
while(low <= high){
mid = (low+high) / 2;
if(number[mid] < find){
low = mid+1;
}else if(number[mid] > find){
high = mid - 1;
}else
return mid;
}
return -1;
}
void quicksort(int number[], int left, int right){
int i, j, k, s;
if(left < right){
s = number[(left+right)/2];
i = left - 1;
j = right + 1;
while(1){
while(number[++i] < s) ; // 向右找
while(number[--j] > s) ; // 向左找
if(i >= j){
break;
}
//交换元素
SWAP(number[i], number[j]);
}
quicksort(number, left, i-1); // 对左边进行递回
quicksort(number, j+1, right); // 对右边进行递回
}
}
运行结果
1.C语言运行结果
2.C++运行结果
最后
以上就是标致金毛为你收集整理的C/C++实现 二分法查找 (数据结构)代码实现运行结果的全部内容,希望文章能够帮你解决C/C++实现 二分法查找 (数据结构)代码实现运行结果所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复