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

© Echo0912 中级黑马   /  2015-9-7 21:39  /  321 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

冒泡排序:
                数组:int[] arr = {24,69,80,57,13};
                自己写代码实现:最后打印的结果是:  13,24,57,69,80
                原理:相邻元素两两比较,大的往后走,第一次循环结束后,最大值就在最后(最大索引处)。
                        原值:24,69,80,57,13
                        第一:24,69,57,13,80     比较了:4次
                        第二:24,57,13,69,80     比较了:3次
                        第三:24,13,57,69,80         比较了:2次
                        第四:13,24,57,69,80     比较了:1

                方法名:bubbleSort
                        for(int i = 0; i<arr.length-1 ; i++ ){   //总共要比较的次数
                                //内循环控制每次比较需要比较的次数
                                for(int j=0; j<arr.length-1-i; j++){ // -1是为了防止索引越界,-i是提高效率
                                        //相邻元素两两比较,大的往后走
                                        if(arr[j] > arr[j+1]){    //arr[j]=80   arr[j+1]=57
                                                int temp = arr[j];
                                                arr[j] = arr[j+1];
                                                arr[j+1] = temp;
                                        }
                               
                                }

                        }


        选择排序:
                数组:int[] arr = {24,69,80,57,13};
                自己写代码实现:最后打印的结果是:  13,24,57,69,80
                原理:从最小索引处开始,那一个索引上的元素,依次与其他索引位置的元素比较,小的在前,大的在后。

        二分(折半)查找:
                前提条件:数组必须是有序的。

                无序数组可以使用二分查找吗?  不可以,原因是因为二分查找的前提条件是数组必须是有序的,即使你对无序数组进行排序,那么也很有可能,元素的位置发生改变。
                8   9  12  10  5    排序后:5  8  9  10 12   60

        Arrays:数组工具类
                public static String toString(int[] arr);
                public static void sort(int[] arr);
                public static int binarySearch(int[] arr,int key);   如果没找到,返回:-插入点-1

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马