冒泡排序与二分法查找

冒泡排序及其优化 

import java.util.*;
public class Wang {
    public static void main(String[] args) {
        int[] values={3,1,6,2,9,0,7,4,5,8};
        int temp=0;
        for(int i=0;i<values.length-1;i++){
            boolean flag=true;
            for(int j=0;j<values.length-1-i;j++){//每循环一次减去外层一次
                if(values[j]>values[j+1]){
                    temp=values[j];
                    values[j]=values[j+1];
                    values[j+1]=temp;

                    flag=false;//只要发生交换,flag值为false
                }
                System.out.println(Arrays.toString(values));
            }
            //不发生交换时,flag为true,循环结束
            if(flag){
                System.out.println("结束!!!");
                break;
            }
            System.out.println("########");

        }

        //System.out.println(Arrays.toString(values));


    }

    }

 运行结果

[1, 3, 6, 2, 9, 0, 7, 4, 5, 8]
[1, 3, 6, 2, 9, 0, 7, 4, 5, 8]
[1, 3, 2, 6, 9, 0, 7, 4, 5, 8]
[1, 3, 2, 6, 9, 0, 7, 4, 5, 8]
[1, 3, 2, 6, 0, 9, 7, 4, 5, 8]
[1, 3, 2, 6, 0, 7, 9, 4, 5, 8]
[1, 3, 2, 6, 0, 7, 4, 9, 5, 8]
[1, 3, 2, 6, 0, 7, 4, 5, 9, 8]
[1, 3, 2, 6, 0, 7, 4, 5, 8, 9]
########
[1, 3, 2, 6, 0, 7, 4, 5, 8, 9]
[1, 2, 3, 6, 0, 7, 4, 5, 8, 9]
[1, 2, 3, 6, 0, 7, 4, 5, 8, 9]
[1, 2, 3, 0, 6, 7, 4, 5, 8, 9]
[1, 2, 3, 0, 6, 7, 4, 5, 8, 9]
[1, 2, 3, 0, 6, 4, 7, 5, 8, 9]
[1, 2, 3, 0, 6, 4, 5, 7, 8, 9]
[1, 2, 3, 0, 6, 4, 5, 7, 8, 9]
########
[1, 2, 3, 0, 6, 4, 5, 7, 8, 9]
[1, 2, 3, 0, 6, 4, 5, 7, 8, 9]
[1, 2, 0, 3, 6, 4, 5, 7, 8, 9]
[1, 2, 0, 3, 6, 4, 5, 7, 8, 9]
[1, 2, 0, 3, 4, 6, 5, 7, 8, 9]
[1, 2, 0, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 0, 3, 4, 5, 6, 7, 8, 9]
########
[1, 2, 0, 3, 4, 5, 6, 7, 8, 9]
[1, 0, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 0, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 0, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 0, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 0, 2, 3, 4, 5, 6, 7, 8, 9]
########
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
########
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
结束!!!

二分法查找 

import java.util.*;
public class Wang {
    public static void main(String[] args) {
        int[] values={44,30,90,2,65};
        Arrays.sort(values);
        int value=0;
        System.out.println(Arrays.toString(values));
        System.out.println(Search(values,44));


    }

    public static int Search(int[] arr,int num) {

        int low = 0;
        int high = arr.length - 1;

        while (low <= high) {
            int mid = (low + high) / 2;
            
            //当要查找的数值等于中间值时,返回mid
            if (num == arr[mid]) {
                return mid;
            }
            
            //当要查找的数值小于中间值时,把high置为mid-1;
            if (num < arr[mid]) {
                high =  mid-1;
            }
            
            //当要查找的数值大于中间值时,把low置为mid+1;
            if (num > arr[mid]) {
                low = mid+1;
            }

        }
        return -1;//找不到查找的值返回-1;
    }
    }

运行结果

查找的是44

[2, 30, 44, 65, 90]
2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值