- 浏览: 105922 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
小小诺:
博主实例2中的代码博主难道没有测试吗?“工资总额不能超过6万元 ...
PLSQL -
emilyzhanghong:
我一般都用工具导入导出,语句记不住.
ORACLE 导入导出
public class Bsearch {
/*
String[] str = new String[]{"abai","aven","cai","creport","czz"};
数组长度为1000以上,已知"rose"为数组中其中一个字符串,排列在未知位置,请用最快速度查找该字符串所在的索引
*/
public static void main(String[] args) {
String[] str = new String[] {"sdaf","fads","dsaf","sdfdsa","hdfh","rose","ghdfgh"};
// 这里定义一个字符串 可以很灵活的查找 任字符串
String str1="rose";
// 先进行排序
stringBubble(str);
// 排序后输出
printStr(str);
// 找到其索引
int index=seach(str,str1);
System.out.println(index);
}
private static void printStr(String[] strs) {
for(String str:strs){
System.out.print(str+" ");
}
System.out.println();
System.out.print("找该字符串所在的索引为: ");
}
private static int seach(String[] strs, String str1) {
int start=0;
int end=strs.length-1;
int mid=0;
// 防止进入死循环
while(mid<=end){
if(mid==end && !strs[mid].equals(str1)){
return 0;
}
// 往前折半查找
if(strs[mid].compareTo(str1)>0){
end = mid;
if((start+end)%2==0){
mid=(start+end)/2;
}
else{
mid=(start+end)/2 +1;
}
continue;
}
// 往后折半查找
else if(strs[mid].compareTo(str1)<0){
start=mid;
if((start+end)%2==0){
mid=(start+end)/2;
}else{
mid=(start+end)/2+1;
}
continue;
}
// 找到了
else if(strs[mid].compareTo(str1)==0){
return mid;
}
}
return 0;
}
public static String[] stringBubble(String[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j].compareTo(arr[j + 1]) > 0) {
swap(arr, j, j + 1);
}
}
}
return arr;
}
public static void swap(String[] arr, int a, int b) {
String temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
}
发表评论
-
db2 with函数使用
2012-08-15 10:59 1007WITH T1 AS( SELECT CGBT.SEGM ... -
db2 数据 对象备份
2012-07-28 17:03 778CREATE OR REPLACE FUNCTION RSPD ... -
Java_sokect 网络通信
2012-05-10 23:52 922客户端程序 package tcp; import j ... -
jdk下载以及Windows 安装
2011-12-29 20:13 1288http://www.oracle.com/technetwo ... -
JAVA基本功<8>_面向对象
2011-12-15 00:22 710一.面向对象的特点: ... -
JAVA基本功<7>_JDBC
2011-12-15 00:19 1083一、jdbc基本概念 jdbc : Java Database ... -
JAVA基本功<6>
2011-12-15 00:16 781一. 1. 循环结构 1. while 语句格式: ... -
JAVA基本功<5>
2011-12-15 00:15 1797一.常量与变量 1.概念:变量就是内存中的一个存储区域,它有 ... -
JAVA基本功<4>
2011-12-15 00:09 7531:人机交互的方式: 一 ... -
J2SE基本功<3>
2011-09-27 15:35 687public class Test1 { public ... -
日期处理
2011-09-12 23:50 814http://changguangjuan.blog.163. ... -
泛型总结
2011-09-08 09:58 752package daan; /* 使用泛型类的限制和 ... -
J2SE基本功<2>
2011-09-07 09:06 669http://blog.csdn.net/java334452 ... -
J2SE基本功<1>
2011-08-16 22:55 611一、Java是一门高级语言,具有跨平台性(一次编译到处运行)1 ... -
IO文件读取
2011-08-01 08:51 678斯蒂芬 -
JAVA编程练手题
2011-07-04 23:48 27831:写一个方法(函数):判断一个单链表中是是否有环? 2:串行 ... -
代理模式
2011-06-16 09:54 632使用动态代理不需要为特定对象与方法编写特定的代理对象,可以 ... -
策略模式
2011-06-09 00:11 717策略模式:高内聚 低耦合 可扩展(OCP) 在策略与最终用 ... -
正则表达式
2011-05-30 15:13 658import java.util.regex.Matcher; ... -
JSP 连接MySQL数据库
2011-05-29 20:23 763<%@ page contentType="t ...
相关推荐
二分查找是一种在有序数组中寻找特定元素的搜索算法,其效率显著高于线性查找。本篇文章将详细探讨Java中的二分查找及其应用。 首先,我们要了解什么是数组。在计算机科学中,数组是一种数据结构,它存储了一组相同...
在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷的进行排序。例如: String[] arrays = new String[] { gyu, sdf, zf, 大同, 收到, 地方, 三等分, 的人, 反对高铁, 泛代数, 上的投入...
在排序过程中,`ComparableTimSort`会进行二分查找(binary sort)来确定元素位置,然后调用元素的`compareTo()`方法进行比较。 对于`List<String>`,由于`String`类已经实现了`Comparable`接口,因此`compareTo()`...
二分查找是在有序的数组中进行查找的方法。注意,使用二分查找,必须是在有序的数组中。 4. 数组的使用思想 数组的特点是: * 数组是一个容器,可以存放相同类型的数据 * 数组有容量大小,使用length属性可以获取...
- `Arrays.binarySearch()`方法可用于已排序数组的二分查找,返回元素的索引。如果数组未排序,先调用`Arrays.sort()`。 6. **数组复制与拷贝**: - `System.arraycopy()`方法用于复制数组的一部分或全部到另一个...
对于已排序的数组,可以使用二分查找提高效率。此外,`Arrays`类也提供了查找方法: ```java int[] arr = {1, 2, 3, 4, 5}; int index = Arrays.binarySearch(arr, 3); // 查找元素3的位置 ``` #### 八、Arrays工具...
在Java编程语言中,二分查找(Binary Search)是一种高效的搜索算法,尤其适用于有序的数组。这个算法基于分治法的思想,将问题不断拆解,直到找到目标元素或者确定目标不存在。下面,我们将深入探讨二分查找的工作...
折半查找也称为二分查找,是在有序数组中查找某一特定元素的一种搜索算法。其基本思想是将 n 个元素分成大致相等的两部分,取 a[n/2] 与 x 进行比较:如果 x=a[n/2],则找到 x ,算法结束;如果 x[n/2],则只要在...
2. 深拷贝与浅拷贝:数组拷贝有深拷贝(复制整个数组及其中的元素)和浅拷贝(只复制数组引用)之分,使用`System.arraycopy()`方法可以实现深拷贝。 3. 排序:Java的`Arrays`类提供了对数组进行排序的方法,如`...
查找元素在有序数组中可以通过二分查找法实现,其效率显著高于线性查找。基本步骤包括: 1. 设置查找范围的起始和结束索引。 2. 如果起始索引大于结束索引,表示未找到元素。 3. 否则,计算中间索引,比较中间元素与...
- `binarySearch(array, key)`:对已排序的数组进行二分查找。 #### 1.8 常见算法 - **排序算法**: - **冒泡排序**:通过重复地比较相邻的两个元素,并交换顺序不正确的元素,从而达到排序的目的。 - **选择...
1. **递归与循环选择**:该案例采用递归来实现二分查找算法。递归方法能够清晰地表达问题的解决思路,但在某些情况下可能不如循环更高效。 2. **数组边界检查**:首先检查目标值是否在数组范围内,这是为了防止不必...
- 查找:查找特定学生,可以使用线性搜索(遍历)或二分搜索(前提是对数组排序)。 5. 动态数组与向量: 在C++中,`std::vector`提供了一种动态数组,允许在运行时添加或删除元素。相比C风格的数组,`std::vector`...
二叉树常用于搜索、排序和文件系统等,例如二分查找和AVL树。 3. **图**:图是由节点(顶点)和边组成的非线性数据结构,表示了元素之间的关系。图可以是无向的(边没有方向)或有向的(边有方向)。图算法如深度...
1. **升序数组**:如果数组是升序排列的,则遵循传统的二分搜索逻辑,即当 `x > a[middle]` 时,更新 `left = middle + 1`;反之,更新 `right = middle - 1`。 2. **降序数组**:如果数组是降序排列的,则当 `x > a...
### Java数组中的查找:基础...通过理解并实现线性查找算法,你可以开始探索更复杂的搜索技术,如二分查找,这在处理已排序的数组时提供了更高的效率。总之,理解并能够应用这些基本算法是成为熟练程序员的重要一步。
本资源提供了179道前端大厂最新面试题的排序部分,涵盖了排序算法、链表操作、数组操作、二分查找、矩阵操作、String操作、数据结构、算法设计、时间复杂度和空间复杂度等知识点,旨在帮助开发者更好地理解和掌握...
4. **数组排序**:二分查找的前提条件是数组已经排序,本示例代码未对数组进行排序处理,因此在实际应用中需要先对数组进行排序。 综上所述,二分查找是一种高效的查找算法,尤其适用于大型有序数组。在C++中,通过...
在编程领域,二分查找(Binary Search)是一种高效地在有序数组或集合中搜索特定元素的算法。这个算法充分利用了数组的线性特性,通过不断缩小搜索范围来找到目标值。下面我们将深入探讨Java实现二分查找的具体步骤...
- 二分查找:适用于已排序的数组,每次比较中间元素,根据比较结果缩小搜索范围,效率高。 7. `java.util.Arrays`类: - 提供了数组排序方法`Arrays.sort()`,适用于基本类型数组。 - `Arrays.binarySearch()`...