黑马程序员技术交流社区

标题: 查找数组int[] arr = { 37, 92, 54, 18, 76 };中18的索引有几种方式? [打印本页]

作者: 谢晓明    时间: 2015-5-29 23:50
标题: 查找数组int[] arr = { 37, 92, 54, 18, 76 };中18的索引有几种方式?
/**
*
*/
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;
        }
}

作者: lijiansheng    时间: 2015-6-24 21:25
zan
作者: 一口老郭    时间: 2015-6-24 21:31
很全面啊,楼主很厉害啊
作者: candy_xue    时间: 2015-6-24 21:37
有点意思  好好学习了
作者: liming_heima    时间: 2015-6-24 21:48
只会第一种的路过。
作者: 贾森    时间: 2015-6-24 22:45
这个不错哦
作者: qian0217wei    时间: 2015-6-24 22:57
还可以用集合框架做!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2