zoukankan      html  css  js  c++  java
  • java 随机数生成,冒泡排序,二分查找法综合运用

    package com.hanqi;
    
    import java.util.*;
    import java.util.Random;
    
    public class Test8 {
    
        public static void main(String[] args) {
            // TODO 自动生成的方法存根
    
            //1.随机生成生成数组
                    Random r1 = new Random();
                    int[] array = new int[10];
                    for (int i = 0; i < array.length; i++) {
                        // 产生随机数
                        array[i] = r1.nextInt(100);   //0-99的随机数
                    }
                    // 遍历输出数组
                    System.out.println("数组的原始顺序");
                    for (int t : array) {
                        System.out.print(t + " ");
                    }
                    
                    //2.冒泡排序
                    System.out.println("排序后的顺序");
                    //总的循环次数
                    for (int k = 0; k < array.length - 1; k++) {
                        //优化:每次冒泡时的循环次数,比上一次少1
                        for (int i = 0; i < array.length - 1-k; i++) {
                            if (array[i] > array[i + 1]) {
                                // 从小到大
                                int zhong = array[i];
                                array[i] = array[i + 1];
                                array[i + 1] = zhong;
    
                            }
                        }
                        System.out.println("数组第" + (k + 1) + "次排序后的顺序");
                        for (int t : array) {
                            System.out.print(t + " ");
                        }
                    }
                    //3.二分查找
                    
                    //1)计算出数组的中间位置:(开始位置索引+结束位置索引)/2
                    
                    //2)取出中间未知的值和要查找的数字比较,根据比较结果决定下一步查找的部分
                    //3)计算出下一部分数组的中间位置
                    
                    //要查找的值
                    Scanner sc=  new   Scanner(System.in);
                    System.out.println("请输入要查找的数");
                    int a=sc.nextInt();
                    //找到的值得位置
                    
                    int w=-1;//-1代表没找到
                    //开始索引
                    int  start=0;
                    //结束索引
                    int  end=array.length-1;
                    //循环条件
                    while(start<=end)
                    {
                    int m=(start+end)/2;
                    if(a==array[m])
                    {
                        w=m;//找到了
                        break;
                    }
                    else if(a>array[m])
                    {
                        start=m+1;
                    }
                    else
                    {
                        end=m-1;
                    }
                    }
                    System.out.println("找到的位置是"+w);
        }
    
    }

  • 相关阅读:
    Openvswitch手册(6): QoS
    [转]linux VLAN配置(vconfig)
    [转]Understand QoS at OpenSwitch
    Openvswitch手册(5): VLAN and Bonding
    Openvswitch手册(4): Mirror
    Openvswitch手册(3): sFlow, netFlow
    Mysql主从复制(重置版)
    Mysql备份工具Xtrabackup
    Mysql用户管理
    Mysql备份工具mysqldump和mysqlhotcopy
  • 原文地址:https://www.cnblogs.com/jskbk/p/5489428.html
Copyright © 2011-2022 走看看