• Java基础【冒泡、选择排序、二分查找】


    冒泡排序的思路就是前一个和后一个进行比较,如果大的就交换位置   大的数字后浮

     如   12      8    5     31

    第一轮   8   5   12   31

    第二轮   5   8    12   31

    ........

    代码如下 

    package com.zuoyan.sort;
    
    /**
     * 冒泡排序
     * @author Administrator
     *
     */
    public class BubbloSortDemo {
        
        
        public static void main(String[] args) {
            
            int []arr = {10,8,20,3,6,22,16};
            for(int i =0 ;i< arr.length;i++)
            {
                for(int j =0; j<arr.length-1-i;j++)
                {
                    if(arr[j]>arr[j+1])
                    {
                        int temp = arr[j];
                        arr[j] = arr[j+1];
                        arr[j+1]= temp;
                    }
                }
            }
            
            
            for (int i : arr) {
                System.out.println(i);
                
            }
            
            
        }
    
    }

    2.选择排序 

    思路就是   将这个数组从头开始遍历  

    从第一个开始   与他后面的每个数字进行比较,如果遇见比他小的   这个两个数字进行交换位置,

    第二个也是,也是从他后面的进行比较,不用比较第一个了,因为第一个已经是整个数组中的最小数字了

    .......

    代码如下

    package com.zuoyan.sort;
    
    /**
     * 选择排序
     * @author Administrator
     *
     */
    public class SelectSort {
        
        
        public static void main(String[] args) {
            
            int [] arr={1,12,11,8,13,89,45,22,61};
            for(int i=0 ;i<arr.length;i++)
            {
                for(int j =i+1;j<arr.length;j++)
                {
                    if(arr[i]>arr[j])
                    {
                        int temp =arr[i];
                        arr[i] = arr[j];
                        arr[j] = temp;
                    }
                }
            }
            
            for (int i : arr) {
                System.out.println(i);
            }
        }
    
    }

    3.二分查找 

    二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查找的表为有序表。二分查找的目的是查找出元素的索引,有个前提是数组元素必须是有序

    package com.zuoyan.sort;
    
    
    /**
     * 二分查找算法
     * @author Administrator
     *
     */
    public class BinarySearch {
    
        
        public static void main(String[] args) {
            
            int[] arr = {11,22,33,44,55,66,77};
            
            int num = 51;
            int index = -1;
            int min = 0;
            int max = arr.length-1;
            int mid = (min+max)/2;
            while(true)
            {
                if(arr[mid] == num)
                {
                    index = mid;
                    break;
                }
                
                if(arr[mid]<num)
                {
                    min = mid +1;
                    mid = (min+max)/2;
                }
                
                if(arr[mid]>num)
                {
                    max = mid-1;
                    mid =(max + min)/2;
                }
                
                if(min>max)
                {
                    break;
                }
                
            }
            
            System.out.println(index);
            
            
            
        }
    }
  • 相关阅读:
    Lc617_合并二叉树
    Lc257_二叉树的所有路径
    Lc222_完全二叉树的节点个数
    记github下载上传遇到的各种问题
    Lc101_对称二叉树
    Lc222_翻转二叉树
    二叉树的dfs 与 bfs (递归遍历)
    全球最火的程序员学习路线!没有之一!3天就在Github收获了接近1w点赞
    大二逃课总结的1.2w字的计算机网络知识!扫盲!
    「IDEA插件精选」安利一个IDEA骚操作:一键生成方法的序列图
  • 原文地址:https://www.cnblogs.com/kangxinxin/p/9689497.html
Copyright © 2020-2023  润新知