zoukankan      html  css  js  c++  java
  • 二十七、Java基础之数组的排列

    /*
    一、冒泡排序:
    int类型的数组:3,1,5,2,6
    */

    public class Test01 {
    
        public static void main(String[] args){
            int[] a={3,1,5,2,6,4};
    
            //开始排序
            for(int i=a.length-1;i>0;i--){
                //System.out.println("i="+i);
                for(int j=0;j<i;j++){
                    //System.out.println("j="+j);
                    if(a[j]>a[j+1]){
                        int temp;
                        temp=a[j];
                        a[j]=a[j+1];
                        a[j+1]=temp;
    
    
                    }
    
                }
    
            }
            //遍历
            for(int i=0;i<a.length;i++){System.out.println(a[i]);}
    
    
        }
    }
    
    /*
    分析:
    1.原数据:
    3,1,5,2,6,4
    第一次循环:6
    1,3,5,2,6,4
    1,3,5,2,6,4
    1,3,2,5,6,4
    1,3,2,5,6,4
    1,3,2,5,4,6
    
    1,3,2,5,4
    第二次循环:5
    1,3,2,5,4
    1,2,3,5,4
    1,2,3,5,4
    1,2,3,4,5
    
    1,2,3,4
    第三次循环:4
    1,2,3,4
    1,2,3,4
    1,2,3,4
    
    1,2,3
    第四次循环:3
    1,2,3
    1,2,3
    
    第五次循环:2
    1,2
    
     */
    二、选择排序:
    // 3 1 6 2 5
    //算法:找出最小值,然后这个最小值和最前面的数据交换位置

    public class Test02 {
    
        public static void main(String[] args){
    
            int[] a={3,1,6,2,5};
    
            //选择排序
            for(int i=0;i<a.length;i++){
                //System.out.print("i="+i+" ");
                //假设第一个数据是最小值
                int min=i;
    
                for(int j=i+1;j<a.length;j++){
                    //System.out.print("j="+j+" ");
                    if(a[min]>a[j]){
                        min=j;
                    }
                }
                //System.out.println();
                //交换位置
                if(min !=i){
                    int temp;
                    temp=a[i];
                    a[i]=a[min];
                    a[min]=temp;
                }
            }
            for(int i=0;i<a.length;i++){
                System.out.print(a[i]);
            }
    
        }
    }
    
    /*
    3 1 6 2 5
    第一次循环:
    1 3 6 2 5
    
    3 6 2 5
    第二次循环:
    2 6 3 5
    
    6 3 5
    第三次循环:
    3 6 5
    
    6 5
    第四次循环:
    5 6
    
    1----4
    2----3
    3----2
    4----1
     */
    /*
    三、二分法查找:
    二分法查找是建立在已经排序的基础之上的。
    2.以下程序分析从小到大排序
    3.这个数组中没有重复的元素

    1 3 5 9 11 13 56
    以上是一个已经排好序的int类型的数组,要求快速找出
    13这个元素的下标

    1 3 5 9 11 13 56

    int begin=0
    int end=6
    int mid=3
    中间元素是9,9<13

    begin=mid+1
    end=6
    mid=5
    */
    public class Test03 {
    
        public static void main(String[] args){
    
            int[] a={1,3,4,5,7,8,9,10,23,25,29};
    
            int descelement=101;
            //要求从a数组汇总查找10这个元素的下标
            int index=binarySearch(a,descelement);//如果找到则返回元素的下标,如果找不到统一返回-1
    
            System.out.println((index==-1)?descelement+"不存在":descelement+"在这个数组的下标为"+index);
    
    
        }
    
        public static int binarySearch(int[] a,int descelement) {
            int begin = 0;
            int end = a.length - 1;
    
    
            while (begin<=end) {
                int mid = (begin + end) / 2;
                if (a[mid] == descelement) {
                    return mid;
                } else if (a[mid] < descelement) {
                    begin = mid + 1;
    
                } else if (a[mid] > descelement) {
                    end = mid - 1;
                }
            }
            return -1;
        }
    }

    四、SUN提供的工具

    import java.util.Arrays;
    
    public class Test04 {
        public static void main(String[] args){
    
            int[] a={3,1,5,2,6,4};
            //排序
            Arrays.sort(a);
            //输出
            for(int i=0;i<a.length;i++){
                System.out.println(a[i]);
            }
    
            //对排序之后的数据进行二分法查找
            int index=Arrays.binarySearch(a,5);
            System.out.println(index);
        }
    }
  • 相关阅读:
    线性代数学习之初等矩阵和矩阵的可逆性
    线性代数学习之线性系统
    容器远程访问vnc--CentOS 6.8安装和配置VNC
    docker安装-单机/多机安装
    docker aufs存储驱动文件系统
    基于PowerCli自动部署和配置vmvare虚拟机
    使用Kubespray在ubuntu上自动部署K8s1.9.0集群
    python应用-pycharm新建模板默认添加shebang编码作者时间等信息
    python开发基础作业01:模拟登陆系统
    git 添加码云远程仓库和上传到码云的命令
  • 原文地址:https://www.cnblogs.com/chushujin/p/10165154.html
Copyright © 2011-2022 走看看