常见——算法

一.排序算法

1.冒泡排序

java 复制代码
public class Test {
    public static void main(String[] args) {
        int []arr={12,34,1,56,44,4,5,55};
        for (int i = 0; i < arr.length-1; i++) {
            for (int j = 0; j < arr.length-i-1; j++) {
                    int temp=arr[j+1];
                    if(arr[j]>arr[j+1])
                    {
                        arr[j+1]=arr[j];
                        arr[j]=temp;
                    }
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

结果:[1, 4, 5, 12, 34, 44, 55, 56]

2.选择排序

java 复制代码
//选择排序
public class Selectsorting_Test {
    public static void main(String[] args) {
            int [] arr={1,34,22,123,8,456};
            //控制几轮
        for (int i = 0; i < arr.length-1; 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;
                   }
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

优化:

复制代码
此方法相当于在一轮中选出一个最小值与当前位置进行比较若小则交换
java 复制代码
public class Selectsorting_Test {
    public static void main(String[] args) {
            int [] arr={1,34,22,123,8,456};
            //控制几轮
        for (int i = 0; i < arr.length-1; i++) {
            //控制每轮选择的次数
           int  minindex =i;
            for (int j = i+1; j < arr.length; j++) {
                 if(arr[minindex]>arr[j])
                 {
                     minindex=j;
                 }
            }
            //判断当前位置是否为最小值
            //若是才进行交换
            if(i!=minindex)
            {
                int temp=arr[i];
                    arr[i]=arr[minindex];
                    arr[minindex]=temp;
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

二.查找算法

二分查找

java 复制代码
package com.itheima;

import java.util.Arrays;
import java.util.Scanner;

//二分查找
public class Test3_Binarysearch {
    public static void main(String[] args) {
        int [] arr ={7,23,79,81,103,127,131,147};
        Scanner sc=new Scanner(System.in);
        System.out.println(Arrays.toString(arr));
        System.out.println("请输入您要查找的数字");
        int number=sc.nextInt();
        System.out.println(binarysearch(arr, number));
        //Java提供的方法
        System.out.println(Arrays.binarySearch(arr, 81));
    }

    public  static String binarysearch(int []arr, int data)
    {//1.定义两个变量,一个站左边,一个站右边
        int left=0;
        int right=arr.length-1;
        //2.定义一个循环控制折半
        while (left<=right)
        {
            //3.每次折半,都算出中间位置处的索引
            int middle=(left+right)/2;
            //4.判断当前要找的元素值,与中间位置处的元素值的大小情况
            if(data<arr[middle])
            {//往左边找,截至位置(右边位置)=中间位置-1
                right =middle-1;
            }
            else if(data>arr[middle])
            {//往右边找,截至位置(右边位置)=中间位置+1;
                left=middle+1;
            }
            else {
                //中间刚好相等,返回我们要找的索引
                return String.valueOf(middle);
            }
        }
        return  "数组中没有该数字";
    }

}
相关推荐
RainbowSea2 分钟前
4. RabbitMQ 发布确认的配置详细说明
java·消息队列·rabbitmq
robin_suli14 分钟前
Spring事务的传播机制
android·java·spring
青云交15 分钟前
Java 大视界 -- Java 大数据在智能电网电力市场交易数据分析与策略制定中的关键作用(162)
java·大数据·数据分析·交易策略·智能电网·java 大数据·电力市场交易
m0Java门徒21 分钟前
Java 递归全解析:从原理到优化的实战指南
java·开发语言
uhakadotcom23 分钟前
Apache Airflow入门指南:数据管道的强大工具
算法·面试·github
云徒川30 分钟前
【设计模式】原型模式
java·设计模式·原型模式
跳跳糖炒酸奶43 分钟前
第四章、Isaacsim在GUI中构建机器人(2):组装一个简单的机器人
人工智能·python·算法·ubuntu·机器人
张张张3121 小时前
4.2学习总结 Java:list系列集合
java·学习
KATA~1 小时前
解决MyBatis-Plus枚举映射错误:No enum constant问题
java·数据库·mybatis
绵绵细雨中的乡音1 小时前
动态规划-第六篇
算法·动态规划