黑马程序员技术交流社区

标题: 数组的三种排序方法 [打印本页]

作者: Morrfree    时间: 2015-8-13 22:19
标题: 数组的三种排序方法
public class ArrayMethodDemo {
        public static void main(String[] args) {
                int[] arr = new int[]{8,6,9,23,47,55,69};
//                bubble(arr);
//                print(arr);
                switchPaiXu(arr);
                print(arr);
                //二分查找法:通过不断比较中间值进行查找.
                int num = 55;
                halfSearch(arr,num);
        }

        private static void halfSearch(int[] arr,int num) {
                int start = 0;
                int end = arr.length-1;
                int mid = (start+end)/2;
               
                //当要查找的数组元素不等于中间索引代表的元素时:
                while (num != arr[mid]) {
                        //当查找的元素值小于中间角标所代表的元素的值时;
                        if (num < arr[mid]) {
                                end = mid - 1;
                        }else{
                                start = mid + 1;
                        }
                        //当查找的元素不存在时,返回-1;
                        if (start > end) {
                                System.out.println(-1);
                        }
                        mid = (start+end)/2;
                }
                System.out.println(mid);
        }

                private static void switchPaiXu(int[] arr) {
                        //选择排序:每一个数依次和其余的数依次比较
                        for (int i = 0; i < arr.length-1; i++) {
                                for (int j = i+1; j < arr.length-1-i; j++) {
                                        if (arr[i]>arr[j]) {
                                                int temp = arr[i];
                                                arr[i] = arr[j];
                                                arr[j] = temp;
                                        }
                                }
                        }
                }

                public static void print(int[] arr) {
                        for (int i = 0; i < arr.length; i++) {
                                System.out.println(arr[i]);
                        }
                }

                public static void bubble(int[] arr) {
                        //冒泡排序:相邻的两个数之间进行比较
                        for (int i = 0; i < arr.length-1; i++) {
                                for (int j = i+1; j < arr.length-1-i; j++) {
                                        if (arr[i]>arr[j]) {
                                                //用临时变量记录较大的数
                                                int temp = arr[i];
                                                arr[i] = arr[j];
                                                arr[j] = temp;
                                        }
                                }
                        }
                }
}





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