A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/**
*
*/
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;
        }
}

6 个回复

倒序浏览
zan
回复 使用道具 举报
很全面啊,楼主很厉害啊
回复 使用道具 举报
有点意思  好好学习了
回复 使用道具 举报
只会第一种的路过。
回复 使用道具 举报
这个不错哦
回复 使用道具 举报
还可以用集合框架做!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马