我是靠谱客的博主 标致金毛,最近开发中收集的这篇文章主要介绍C/C++实现 二分法查找 (数据结构)代码实现运行结果,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

代码实现

        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++实现 二分法查找 (数据结构)代码实现运行结果所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部