什么是算法?

文章介绍了如何使用Java实现冒泡排序和选择排序算法,包括升序和降序排列。首先,详细阐述了冒泡排序的逻辑和代码实现,然后展示了选择排序的基本过程,并对其进行了优化。通过这两个基础排序算法的示例,强调了学习算法对于锻炼编程思维的重要性。
摘要由CSDN通过智能技术生成

解决某个实际问题的过程和方法!

为什么要学习算法?

锻炼编程思维

  • 简单认识算法
  • 排序算法
  • 冒泡排序
  • 学习算法技巧
  • (升序和降序)
  • 1.先搞清楚算法的流程
  • 2.直接去推敲如何写代码
  • 冒泡排序
  • 每次从数组中找出最大值放在数组的后面去
  • package Demo0706;
    
    import java.util.Arrays;
    
    public class DemoTest {
        public static void main(String[] args) {
            //1.定义一个静态数组
            int[] arr = {5, 3, 2, 1};
    
            //2.定义一个循环控制排几轮
            for (int i = 0; i < arr.length - 1; i++) {
                //i = 0  1  2           [5,  2,  3,  1]      次数
                //i = 0  第一轮           0   1   2            3
                //i = 1  第二轮           0   1                2
                //i = 2  第三轮           0                    1
    
                for (int j = 0; j < arr.length - i - 1; j++) {
                    //判断当前位置的元素值,是否大于后一个位置处的元素值,如大于则交换
    
                    if (arr[j] > arr[j + 1]) {
                        int temp = arr[j + 1];
                        arr[j + 1] = arr[j];
                        arr[j] = temp;
                    }
                }
            }
            System.out.println(Arrays.toString(arr));
        }
    }
    

    选择排序

  • package Demo0707;
    
    import java.util.Arrays;
    
    public class Demo_选择排序 {
        public static void main(String[] args) {
            //1.准备一个数组
            int[] arr = {5, 2, 3, 1};
    
            //2.控制选择几轮
            for (int i = 0; i < arr.length - 1; i++) {
                //i = 0 第一轮     j = 1 2 3
                //i = 1 第二轮     j = 2 3
                //i = 2 第三轮     j = 3
                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));
            System.out.println("===============我是分割线===============");
            //优化
            //1.准备一个数组
            int[] arr2 = {5, 2, 3, 1};
    
            //2.控制选择几轮
            for (int i = 0; i < arr2.length - 1; i++) {
    
                int minIndex = i;
    
                for (int j = i + 1; j < arr2.length; j++) {
    
                    if (arr2[minIndex] > arr2[j]) {
                        minIndex = j;
                    }
                }
                if (i != minIndex) {
                    int temp = arr2[i];
                    arr2[i] = arr2[minIndex];
                    arr2[minIndex] = temp;
                }
            }
            System.out.println(Arrays.toString(arr2));
        }
    }
    

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值