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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/*
* 冒泡排序:
* 将两个相邻的数字进行比较,如果第一个数比第二个数大,就交换,一直比较到最后,将把最大值移动到数组的末尾;
* 将上述的程序再次执行,将把数组中第二大的数字移到数组的后边,依次类推,反复比较。
*/
public class Demo {
        public static void main(String[] args) {
                int[] array = {1432,432,6543,523,43,867};
                for(int i = 0;i < array.length - 1;i++){//外层循环控制循环次数;一共比较多少"轮"
                        for(int j = 0; j < array.length - 1 - i ; j++){//判断每个数跟后边的数进行比较,并交换
                                //判断
                                if(array[j] > array[j + 1]){
                                        //交换
                                        int temp = array[j];
                                        array[j] = array[j + 1];
                                        array[j + 1] = temp;
                                }
                        }
                }
                //遍历数据,查看效果
                for(int i = 0;i < array.length ; i++){
                        System.out.println(array[i]);
                }
        }
}


/*
* 选择排序:
*
* 1.是将每个数,与它后边的每个数依次进行比较
*/
public class Demo {
        public static void main(String[] args) {
                int[] array = {21,43,24,4365,42,42,554,76,57,3,66,96};
                for(int i = 0;i < array.length - 1 ; i++){
                        for(int j = i + 1 ; j < array.length ; j++){
                                if(array[i] > array[j]){
                                        int temp = array[i];
                                        array[i] = array[j];
                                        array[j] = temp;
                                }
                        }
                }
                //遍历检查结果
                for(int i = 0;i < array.length ; i++){
                        System.out.println(array[i]);
                }
               
        }
}

//二分查找。前提:数组必须是有序的。
        /*
        思路:
        1,通过角标先获取中间角标上元素。
        2,让该元素和要找的数据比较。
        3,如果要找的数大了,缩小范围,要找的范围应该是 中间的角标+1---尾角标。
                如果要找的数小了,要找的范围 头角标---中间角标-1;
        4,不断如此重复,就可以找到元素对应的角标。
        */
public class Demo {
        public static void main(String[] args) {
                int[] array = {10,20,30,40,50};
                int start = 0;
                int end = array.length - 1;
                int mid = (start + end) / 2; //第一次找的索引
                int num = 50;        //要找的数
                boolean flag = false;
                while(start <= end){
                        if (  num  <  array [ mid ]  ){//往左走
                                end = mid - 1;
                        }else if( num > array[ mid ] ){ // 往右走
                                start = mid + 1;
                        }else {
                        //        System.out.println("找到数字,索引:" + mid);
                                flag = true;
                                break;
                        }
                        mid = (start + end) / 2;
                }
                /*if(start > end){
                        System.out.println("数字没找到!");
                }*/
                if(flag){
                        System.out.println("找到数字:索引为:" + mid);
                }else{
                        System.out.println("数字没找到 !");
                }
        }
}

2 个回复

倒序浏览
攒。。。。。。。。。
回复 使用道具 举报
咦 我们都学到面向对象去了  这几种排序方式居然没放视频。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马