`
luozhonghua2014
  • 浏览: 62501 次
文章分类
社区版块
存档分类
最新评论

字符二分快速查找

 
阅读更多
import java.util.Scanner;


/**
 * 
 * @author luozhonghua
 *
 */
public class charSearchAndSort {

	 static void kuaiSu(char[] a,int left,int right)             //字符快速排序  
	    {  
	        int f,l,r;  
	        char t;  
	  
	        l=left;  
	        r=right;  
	        f=a[(left+right)/2];  
	        
	        while(l<r){  
	            while(a[l]<f) ++l;  
	            while(a[r]>f) --r;  
	            if(l<=r){  
	                t=a[l];  
	                a[l]=a[r];  
	                a[r]=t;  
	                ++l;  
	                --r;  
	            }  
	        }  
	        
	        if(l==r)  l++;  
	        if(left<r) kuaiSu(a,left,l-1);                 //递归调用  
	        if(l<right) kuaiSu(a,r+1,right);                //递归调用  
	    }  
 
	 static int searchFun(char []a,int n,char x){                     //折半查找
		    int mid,low,high;
			low=0;
			high=n-1;
		    while(low<=high){
		   		mid=(low+high)/2;
				if(a[mid]==x)
		            return mid;						//找到
				else if(a[mid]>x)
				    high=mid-1;
		        else
					low=mid+1;
		    }
			return -1;								//未找到
		}
	 
	    public static void main(String[] args)   
	    {  
	        char[] str=new char[80];  
	        int N;
	        char[] x=new char[80];
	  
	        System.out.print("输入一个字符串:");  
	        Scanner input=new Scanner(System.in);  
	        str=input.next().toCharArray();                         //输入字符串  
	        N=str.length;     
	        System.out.print("排序前:\n");  
	        System.out.println(str);                //输出  
	        kuaiSu(str,0,N-1);                      //二分排序  
	        System.out.print("排序后:\n");  
	        System.out.print(str);              //输出  
 
	        //二分查找
	        System.out.print("\n");
	        System.out.println("输入要查找的字符:");
		    Scanner inpu=new Scanner(System.in);
		    x=inpu.next().toCharArray();							//输入要查找的数

		   int n=searchFun(str,N,x[0]);						//查找
		    if(n<0)								//输出查找结果
	           System.out.println("没找到数据:"+x);
			else
			   System.out.println("数据:"+x[0]+" 位于数组的第"+(n+1)+" 个元素处。");
	   
	    }  
}

分享到:
评论

相关推荐

    逗号分隔的字符串+快速排序+二分查找

    一个字符串中有逗号分隔的多个子字符串,对子字符串进行快速排序,搜索时使用二分搜索。提高字符串的查找性能。 注意:为处理简单,程序会修改原始字符串中的逗号为\0,如果要使用整个字符串,需要把中间的\0改为...

    二分查找算法

    二分查找算法,也称为折半查找,是一种在有序数组中搜索特定元素的搜索算法。它的基本思想是通过不断地将搜索区间对半减小,从而快速定位目标元素。这种算法适用于已排序的数据集,可以充分利用数据的有序性,显著...

    算法:还有比二分查找更快的算法,判断是否是子字符串IsSubsequence,排序算法数据结构

    在解决子序列问题时,二分查找通常用于在目标字符串`T`中寻找给定字符串`S`的起始位置。但在这个问题中,由于子序列不必保持连续,二分查找可能不是最佳选择。 解法一采用了一种双指针的方法,分别从`S`的两端向...

    Hash查找、二分查找c语言关键字个数

    在编程领域,查找算法是解决问题的关键技术之一,用于...哈希查找适用于大规模数据的快速查找,而二分查找则适用于有序数据集。两者在本项目中结合使用,既实现了高效的查找,又能准确统计C语言源文件中的关键字个数。

    快速查找(a-z)

    标题中的“快速查找(a-z)”通常指的是在编程或数据处理中的一种高效搜索算法,它可能涉及到排序和二分查找等技术。在本场景下,由于没有具体的描述,我们可以推测这是一个关于如何在已排序的字母序列(a到z)中...

    数据结构 二分查找程序代码

    在实际应用中,二分查找常用于数据库索引、搜索引擎、大型数据集的快速定位等场景。 #### 结论 通过对给定代码的深入分析,我们不仅了解了二分查找的基本原理和C语言实现细节,还看到了其在实际问题解决中的高效性...

    字符串查找替换程序设计

    - **二分查找**:适用于有序字符串,但在这里并不常用,因为字符串通常无序。 3. **字符串替换**: - **简单替换**:定位到目标字符串,然后直接替换为新的字符串。 - **全局替换**:不仅替换第一次出现的目标...

    vc++ 快速检索匹配字符串

    在存储字符串集合并进行快速查找时,哈希表特别有用。不过,这种方法需要内存开销,并且在处理冲突时可能需要额外的处理。 5. **模式匹配算法**:对于复杂的字符串匹配问题,如正则表达式匹配,可以使用KMP(Knuth-...

    字符串查找_字符串查找_

    二分搜索在有序字符串中查找特定字符时效率较高,但并不适用于无序或未排序的字符串。 KMP算法是一种不回溯的匹配算法,通过预处理查找模式(子串)来避免不必要的字符比较,减少了不必要的回溯,时间复杂度为O(n)...

    c语言分治法实现二分查找源码.doc

    'C语言分治法实现二分查找源码'一文提供了一个使用C语言实现的二分查找算法源码,该算法可以在数组中快速查找指定的数字。下面是该源码的详细分析: 二分查找算法简介 二分查找算法是一种高效的查找算法,它通过将...

    字符串查找工具

    常见的查找算法有线性搜索、二分搜索和哈希表查找等,其中最简单的是线性搜索,适用于无序数据。 2. **正则表达式**:许多高级的字符串查找工具支持正则表达式,这是一种强大的模式匹配语言。例如,`.*` 可以匹配...

    数据结构(栈、队列、二叉树、顺序查找、二分查找、图的遍历等)

    二分查找适用于已排序的数组,通过不断缩小搜索范围来快速定位目标元素。每次将中间元素与目标元素比较,根据比较结果决定在左半部分还是右半部分继续查找。二分查找的时间复杂度为O(log n),效率较高。 6. 哈夫曼...

    二分查找

    - 数据库查询:在索引有序的数据库中,二分查找可以快速定位到目标记录。 - 字典和编码表:在编译器设计中,用于查找单词、符号或字符编码。 - 电子书搜索:在电子书中查找关键词,可以采用二分查找优化搜索速度。 -...

    二分查找.docx 二分查找(Binary Search)是一种在有序数组中查找特定元素的算法 该算法的基本思想是先确定待查找区

    2. **数据类型**:二分查找适用于数值型数据,对于非数值型数据(如字符串),需要定义合适的比较方法。 3. **边界情况**:在编写代码时,要注意处理好边界情况,比如数组为空的情况。 通过以上介绍,我们可以看到...

    字符串查找工具.rar

    常见的字符串查找算法有朴素查找、二分查找、KMP算法和Boyer-Moore算法等,每种算法都有其适用场景和优缺点。 "字符串查找工具"采用的可能是优化过的字符串搜索算法,如KMP或Boyer-Moore,这些算法在处理大量文本时...

    字母快速查找

    在IT领域,字母快速查找是一种常见的数据处理技巧,特别是在文本操作、编码解码以及搜索算法中。本主题主要关注如何高效地在字母表中定位和查找特定字母,这对于理解和优化计算机程序性能至关重要。 首先,我们要...

    在列表框中快速查找和定位子项(7KB)

    1. **查找算法**:实现快速查找通常涉及到某种查找算法,如线性查找、二分查找等。线性查找简单但效率较低,适合小规模数据;二分查找则需要数据有序,适用于大规模数据。 2. **实时搜索**:可能介绍如何在用户输入...

    java二分搜索法程序,分行显示

    综上所述,这个Java程序利用了二分搜索法在有序数据中快速定位,同时进行了文字处理,可能是在J2ME环境下运行,适用于有限资源的设备。具体实现可能包括数组操作、字符串分割和显示逻辑。对于开发者来说,理解和掌握...

    字符串查找、替换

    在编程中,有两种常见的查找方法:顺序查找和二分查找。但就字符串而言,更常用的是KMP算法(Knuth-Morris-Pratt)和Boyer-Moore算法,它们都是为了提高效率而设计的。 1. **顺序查找**:最简单的查找方法,从字符...

    C#使用二分查找法判断指定字符的方法

    这个例子中的二分查找法适用于查找特定字符,但需要注意的是,二分查找的前提是数据已经排序。因此,在实际应用中,如果数据未排序,需要先进行排序操作。此外,对于大型数据集,二分查找比线性查找(Linear Search...

Global site tag (gtag.js) - Google Analytics