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

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

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

要导的包:

import java.util.Arrays;

 

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

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

 

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

  int temp;
 for (int i = 0; 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[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]

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

 

 

你可能感兴趣的:(必要的,实操,Java,基础)