首页 > 其他分享 >查找

查找

时间:2023-06-10 12:32:00浏览次数:26  
标签:count int scanf list 查找 low key

#include  <stdio.h>
#include  <stdlib.h>
#define  MAX  100

int binarySearch(int list[], int n, int key, int *count) {
	int low = 0, high = n - 1, num = 0;
	int t = (low + high) / 2;
	while (low <= high) {
		if (list[t] == key) {
			num++;
			(*count) = num;//这是属于覆盖,而(*count)++则是在地址上的量自增,在以后使用到他时仍是那个值。。。
			return t;
		} else if (list[t] < key) {
			num++;
			low = t + 1;
			t = (low + high) / 2;
		} else {
			num++;
			high = t - 1;
			t = (low + high) / 2;
		}
	}
	(*count) = num;
	return -1;
}




void  sort(int  list[],  int  n) {
	int i, j, t;
	for (i = 1; i < n; i++) {
		for (j = 0; j < n - i; j++) {
			if (list[j] > list[j + 1]) {
				t = list[j + 1];
				list[j + 1] = list[j];
				list[j] = t;
			}
		}
	}

}

int  main() {
	int  i, n, key, count = 0;
	int  a[MAX];
	while (scanf("%d", &n) == 1) {
		for (i = 0; i < n; i++) {
			scanf("%d", &a[i]);
		}
		sort(a, n);
		scanf("%d", &key);
		if ((i = binarySearch(a, n, key, &count)) >= 0) {
			printf("%d  [%d]\n", i + 1, count);
		} else {
			printf("no  [%d]\n", count);
		}
	}
	return  0;
}

标签:count,int,scanf,list,查找,low,key
From: https://blog.51cto.com/u_16030624/6454436

相关文章

  • 查找一之顺序查找、二分查找、分块查找
    1、概念:在一些有序的或无序的数据元素中,通过一定的方法找出与给定关键字相同的数据元素的过程叫做查找,也就是给定一个值,在查找表中确定一个关键字等于给定值的记录或数据元素。2、平均查找长度(后期可能会增加)3、查找长度分为成功和失败两种4、顺序查找1、主要思想:将查找值......
  • Python查找任意字符串中只出现一次的字符(2016奇虎笔试题)
    '''  程序功能:  编写函数,给定任意字符串,找出其中只出现一次的字符,  如果有多个这样的字符,就全部找出。'''importsysdefsearchOne(s):#创建空字典d=dict()#遍历字符串,并分别记录每个字符的出现次数forchins:#这里重点演示字典的ge......
  • 从零开始学Java之查找算法有哪些?
    前言在前面的两篇文章中,给大家介绍了常见的排序算法,除此之外,其实还有查找算法也需要我们掌握。接下来就来给大家讲讲都有哪些查找算法,以及经典的二分查找法该如何实现。全文大约【3000】字,不说废话,只讲可以让你学到技术、明白原理的纯干货!本文带有丰富的案例及配图视频,让你更......
  • 二分查找
    #include<bits/stdc++.h>usingnamespacestd;intmain(intargc,char**argv){intmax=100,min=0;stringb;cout<<"请你想一个数1~100"<<endl;system("pause");cout<<"这个数是:"<<(max-m......
  • 打卡第一天| 704. 二分查找 27. 移除元素
    第N遍做这个题 这题也写过很多次了还是有点费劲。需要回忆。用时14min。 ......
  • liunx查找并删除历史文件
    find路径-mtime+天数-typef-name"文件名"-execrm-rf{};find/tmp-mtime+30-typef-name"*"-execrm-rf{}\;/tmp--设置查找的目录;-mtime+30--设置修改时间为30天前;-typef--设置查找的类型为文件;其中f为文件,d则为文件夹-name"*"--设置文件名称,可......
  • 7.12 字符串查找
    containsindexOf,lastIndexOf,startsWith,endWithpublicclassHelloWorld{publicstaticvoidmain(Stringargs[]){//Stringargs[]字符串数组的意思Stringstr="www.mldn.cn";System.out.println(str.contains("mldn"));//tru......
  • 数据结构与算法分析(Java语言描述)(16)—— 二叉搜索树基础、节点插入、查找
    基础//二叉搜索树//由于Key需要能够进行比较,所以需要extendsComparable<Key>publicclassBinarySearchTree<KeyextendsComparable<Key>,Value>{//树中的节点为私有的类,外界不需要了解二叉搜索树节点的具体实现privateclassNode{privateKeykey;......
  • 算法 in Go:Binary Search(二分查找)
    算法inGo:BinarySearch(二分查找)BinarySearch(二分查找)BinarySearch(二分查找)猜数1、2、3、4、5、6、7、8排好序一个集合,先从中间开始猜,根据提示就可以排除一半,在剩余的一半里,再从中间开始猜,依此类推,这就是二分查找。BinarySearch(二分查找)接收什么参数,返回什么值输入:......
  • 二分查找
    思路二分法的前提是数组有序。另外,当数组中存在重复元素时,最后返回的下标可能不唯一,具体实现不同,可能导致最后结果也不同。left和right代表搜索区域的上下界,其基本思路就是把数组搜索区域分成两个区域,通过middle指针判别目标值属于哪个区域,然后在目标值所在的区域进一步二分,逐......