/**
*
*/
package cn.itcast;
import java.util.Arrays;
/**
* 查找数组int[] arr = { 37, 92, 54, 18, 76 };中18的索引有几种方式?
*/
public class SearchTest {
public static void main(String[] args) {
int[] arr = { 37, 92, 54, 18, 76 };
{
/**
* 第一种方法:遍历数组,找到就结束
*/
int index = -1;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == 18) {
index = i;
break;
}
}
System.out.println("index=" + index);
}
{
/**
* 第二种方法:先将其转化为String类型,去除“[”," ","]"之后, 用“,”作为分隔符,然后遍历字符串数组
* 再遍历字符串数组。
*/
String str = Arrays.toString(arr);
str = str.replace(" ", "");
str = str.replace("[", "");
str = str.replace("]", "");
String[] s = str.split(",");
int index = -1;
for (int i = 0; i < s.length; i++) {
if (s[i].equals("18")) {
index = i;
break;
}
}
System.out.println("index=" + index);
}
{
/**
* 第三种方法:使用自己写好的IndexSort类
*/
int[] index = IndexSort.indexSort(arr);
int temp = Arrays.binarySearch(arr, 18);
System.out.print("index=" + index[temp]);
}
}
}
package cn.itcast;
public class IndexSort {
public static int[] indexSort(int[] arr) {
int[] index = new int[arr.length];
for (int i = 0; i < index.length; i++) {
index[i] = i;
}
for (int i = 0; i < arr.length - 1; i++) {
// 内循环控制每次比较中,元素两两比较的过程。每次需要比较的数据是逐渐减少的。
for (int j = 0; j < arr.length - 1 - i; j++) {
// 比较相邻元素,如果前面的大,进行交换
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
temp = index[j];
index[j] = index[j + 1];
index[j + 1] = temp;
}
}
}
return index;
}
}
|
|