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改为...
二分查找算法,也称为折半查找,是一种在有序数组中搜索特定元素的搜索算法。它的基本思想是通过不断地将搜索区间对半减小,从而快速定位目标元素。这种算法适用于已排序的数据集,可以充分利用数据的有序性,显著...
在解决子序列问题时,二分查找通常用于在目标字符串`T`中寻找给定字符串`S`的起始位置。但在这个问题中,由于子序列不必保持连续,二分查找可能不是最佳选择。 解法一采用了一种双指针的方法,分别从`S`的两端向...
在编程领域,查找算法是解决问题的关键技术之一,用于...哈希查找适用于大规模数据的快速查找,而二分查找则适用于有序数据集。两者在本项目中结合使用,既实现了高效的查找,又能准确统计C语言源文件中的关键字个数。
标题中的“快速查找(a-z)”通常指的是在编程或数据处理中的一种高效搜索算法,它可能涉及到排序和二分查找等技术。在本场景下,由于没有具体的描述,我们可以推测这是一个关于如何在已排序的字母序列(a到z)中...
在实际应用中,二分查找常用于数据库索引、搜索引擎、大型数据集的快速定位等场景。 #### 结论 通过对给定代码的深入分析,我们不仅了解了二分查找的基本原理和C语言实现细节,还看到了其在实际问题解决中的高效性...
- **二分查找**:适用于有序字符串,但在这里并不常用,因为字符串通常无序。 3. **字符串替换**: - **简单替换**:定位到目标字符串,然后直接替换为新的字符串。 - **全局替换**:不仅替换第一次出现的目标...
在存储字符串集合并进行快速查找时,哈希表特别有用。不过,这种方法需要内存开销,并且在处理冲突时可能需要额外的处理。 5. **模式匹配算法**:对于复杂的字符串匹配问题,如正则表达式匹配,可以使用KMP(Knuth-...
二分搜索在有序字符串中查找特定字符时效率较高,但并不适用于无序或未排序的字符串。 KMP算法是一种不回溯的匹配算法,通过预处理查找模式(子串)来避免不必要的字符比较,减少了不必要的回溯,时间复杂度为O(n)...
'C语言分治法实现二分查找源码'一文提供了一个使用C语言实现的二分查找算法源码,该算法可以在数组中快速查找指定的数字。下面是该源码的详细分析: 二分查找算法简介 二分查找算法是一种高效的查找算法,它通过将...
常见的查找算法有线性搜索、二分搜索和哈希表查找等,其中最简单的是线性搜索,适用于无序数据。 2. **正则表达式**:许多高级的字符串查找工具支持正则表达式,这是一种强大的模式匹配语言。例如,`.*` 可以匹配...
二分查找适用于已排序的数组,通过不断缩小搜索范围来快速定位目标元素。每次将中间元素与目标元素比较,根据比较结果决定在左半部分还是右半部分继续查找。二分查找的时间复杂度为O(log n),效率较高。 6. 哈夫曼...
- 数据库查询:在索引有序的数据库中,二分查找可以快速定位到目标记录。 - 字典和编码表:在编译器设计中,用于查找单词、符号或字符编码。 - 电子书搜索:在电子书中查找关键词,可以采用二分查找优化搜索速度。 -...
2. **数据类型**:二分查找适用于数值型数据,对于非数值型数据(如字符串),需要定义合适的比较方法。 3. **边界情况**:在编写代码时,要注意处理好边界情况,比如数组为空的情况。 通过以上介绍,我们可以看到...
常见的字符串查找算法有朴素查找、二分查找、KMP算法和Boyer-Moore算法等,每种算法都有其适用场景和优缺点。 "字符串查找工具"采用的可能是优化过的字符串搜索算法,如KMP或Boyer-Moore,这些算法在处理大量文本时...
在IT领域,字母快速查找是一种常见的数据处理技巧,特别是在文本操作、编码解码以及搜索算法中。本主题主要关注如何高效地在字母表中定位和查找特定字母,这对于理解和优化计算机程序性能至关重要。 首先,我们要...
1. **查找算法**:实现快速查找通常涉及到某种查找算法,如线性查找、二分查找等。线性查找简单但效率较低,适合小规模数据;二分查找则需要数据有序,适用于大规模数据。 2. **实时搜索**:可能介绍如何在用户输入...
综上所述,这个Java程序利用了二分搜索法在有序数据中快速定位,同时进行了文字处理,可能是在J2ME环境下运行,适用于有限资源的设备。具体实现可能包括数组操作、字符串分割和显示逻辑。对于开发者来说,理解和掌握...
在编程中,有两种常见的查找方法:顺序查找和二分查找。但就字符串而言,更常用的是KMP算法(Knuth-Morris-Pratt)和Boyer-Moore算法,它们都是为了提高效率而设计的。 1. **顺序查找**:最简单的查找方法,从字符...
这个例子中的二分查找法适用于查找特定字符,但需要注意的是,二分查找的前提是数据已经排序。因此,在实际应用中,如果数据未排序,需要先进行排序操作。此外,对于大型数据集,二分查找比线性查找(Linear Search...