向后顺序搜索
sequential search backward
我正在学习顺序搜索并有顺序搜索代码,但我想查找其搜索过程是从右(数据结尾)到左(数据开头)的数字。
public static void main(String[] args) {
int []a={5,6,9,2,8,1,7};
int key=8;
boolean f=false;
for (int i = 0; i < a.length; i++) {
if(key == a[i]){
System.out.println("data found on index "+i);
f=true;
break;
}
}
if (f=false){
System.out.println("data not found");
}
}
如果你想从后往前搜索,我想你可以直接编辑循环选项。
for (int i = a.length - 1 ; i >= 0; i--)
如果您要查找与键匹配的所有索引,那么您可以创建一个方法,该方法 return 是一组代表找到的每个索引的整数值。您还可以使用从 array.length - 1 到 0 的简单 for 循环从右到左循环。
static Set<Integer> matchingIndices(int[] array, int key) {
Set<Integer> indices = new HashSet<>();
for (int index = array.length - 1; index > -1; index--) {
int valueAtIndex = array[index];
if (valueAtIndex == key) {
indices.add(index);
}
}
return indices;
}
例子
public static void main(String[] args) {
int [] a= {5,6,9,2,8,1,7};
int key = 8;
Set<Integer> indices = matchingIndices(a, key);
if (indices.isEmpty()) {
System.out.println("No index found for key.");
} else {
System.out.println("Key found at following indices: " + indices);
}
}
如果您想使用相同的键从右到左查找第一个索引,只需 return 一个 int 并快速失败。
static int firstIndex(int[] array, int key) {
for (int index = array.length - 1; index > -1; index--) {
int valueAtIndex = array[index];
if (valueAtIndex == key) {
return index;
}
}
throw new IllegalStateException("No index found with the same key.");
}
例子
public static void main(String[] args) {
int [] a= {5,6,9,2,8,1,7};
int key = 8;
try {
int index = firstIndex(a, key);
System.out.println(String.format("Found key at index %s", index));
} catch (IllegalStateException ise) {
System.out.println("No index found.");
}
}
我正在学习顺序搜索并有顺序搜索代码,但我想查找其搜索过程是从右(数据结尾)到左(数据开头)的数字。
public static void main(String[] args) {
int []a={5,6,9,2,8,1,7};
int key=8;
boolean f=false;
for (int i = 0; i < a.length; i++) {
if(key == a[i]){
System.out.println("data found on index "+i);
f=true;
break;
}
}
if (f=false){
System.out.println("data not found");
}
}
如果你想从后往前搜索,我想你可以直接编辑循环选项。
for (int i = a.length - 1 ; i >= 0; i--)
如果您要查找与键匹配的所有索引,那么您可以创建一个方法,该方法 return 是一组代表找到的每个索引的整数值。您还可以使用从 array.length - 1 到 0 的简单 for 循环从右到左循环。
static Set<Integer> matchingIndices(int[] array, int key) {
Set<Integer> indices = new HashSet<>();
for (int index = array.length - 1; index > -1; index--) {
int valueAtIndex = array[index];
if (valueAtIndex == key) {
indices.add(index);
}
}
return indices;
}
例子
public static void main(String[] args) {
int [] a= {5,6,9,2,8,1,7};
int key = 8;
Set<Integer> indices = matchingIndices(a, key);
if (indices.isEmpty()) {
System.out.println("No index found for key.");
} else {
System.out.println("Key found at following indices: " + indices);
}
}
如果您想使用相同的键从右到左查找第一个索引,只需 return 一个 int 并快速失败。
static int firstIndex(int[] array, int key) {
for (int index = array.length - 1; index > -1; index--) {
int valueAtIndex = array[index];
if (valueAtIndex == key) {
return index;
}
}
throw new IllegalStateException("No index found with the same key.");
}
例子
public static void main(String[] args) {
int [] a= {5,6,9,2,8,1,7};
int key = 8;
try {
int index = firstIndex(a, key);
System.out.println(String.format("Found key at index %s", index));
} catch (IllegalStateException ise) {
System.out.println("No index found.");
}
}