冒泡排序和二分法(折中法)查找

本文详细介绍了冒泡排序的实现过程,并通过示例展示了排序过程。同时,针对冒泡排序的效率问题,提出了优化策略。此外,还简述了二分法查找的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本章内容(一个类的代码,上下能看懂)冒泡排序的概念和实现与优化,二分法的概念和实现:

排序:冒泡排序:数据之间两两比较,大的放后面,直到比较出最大的那个出来,然后继续循环比较。
 *   优化:有时会出现已经排序好了,但依然循环的情况,这时就要判断是否还在进行比较,
 *      如果没有比较说明排序已经好了,可以跳出循环了
 *   查找:二分法查找(折半查找):需要数组已经排序好了;将整个数组对折,然后将目标数和中间数
 *      进行比较,如果目标数比中间数大,那么目标数就是在右边,反之,目标数在左边(如何目标数
 *      等于中间数,那么就找出来了);然后以中间数下标+1的数作为起始来再进行对折,以此类推,
 *      直到找到目标数。

要导的包:

import java.util.Arrays;

 

冒泡排序,我们分步骤来看代码,对下面这个数组进行排序:

int[] nums = {2,9,0,7,6,1};

 

按照冒泡排序的原理,我们要挨个挨个的比较:

  int temp;
 for (int i = 0; i <nums.length-1 ; i++) {
                //比较大小
                if(nums[i]>nums[i+1]){
                    temp = nums[i];
                    nums[i] = nums[i+1];
                    nums[i+1]=temp;

          //        flag = false;//false说明任然在比较,没排序完
                }
                System.out.println(Arrays.toString(nums));
            }

结果是

[2, 9, 0, 7, 6, 1]
[2, 0, 9, 7, 6, 1]
[2, 0, 7, 9, 6, 1]
[2, 0, 7, 6, 9, 1]
[2, 0, 7, 6, 1, 9]

比较出最大的那个了,那么我们要继续比较,就需要在外面在加一层循环

  int[] nums = {2,9,0,7,6,1};
         int temp;
        for (int j = 0; j <nums.length-1 ; j++) {
       //     boolean flag = true;//判断是否在比较,true说明已经排序完了
            for (int i = 0; i <nums.length-1 ; i++) {
                //比较大小
                if(nums[i]>nums[i+1]){
                    temp = nums[i];
                    nums[i] = nums[i+1];
                    nums[i+1]=temp;

           //         flag = false;//false说明任然在比较,没排序完
                }
                System.out.println(Arrays.toString(nums));
            }
//            if(flag){//为true时,排序完了,跳出循环
//                break;
//            }
        }

执行,结果:(结果太长,中间省略了)

[2, 9, 0, 7, 6, 1]
[2, 0, 9, 7, 6, 1]
[2, 0, 7, 9, 6, 1]
[2, 0, 7, 6, 9, 1]
....................
[0, 1, 2, 6, 7, 9]
[0, 1, 2, 6, 7, 9]
[0, 1, 2, 6, 7, 9]

那么我们发现已经排序好了也还在循环,我们优化一下,也就是把上面的注释的部分加上,回发现结果要短了很多。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值