java选择排序推演过程

选择排序推演过程

1. 找出数组中最大值和下角标为 0 的元素交换位置

思路:

一.先找出最大值
1.假设index为 0 ,下角标为 0 的元素就是最大值
2.遍历数组,用index依次和后续所有数据做比较
3.i 从1开始,自身和自身做比较没有意义
4.如果第一个元素小于第二个元素,说明第二个元素是较大值。赋值给index
5.用赋值后的index和第三个元素做比较,依次类推
6.遍历结束后,index就是最大值
二.交换位置
8.此种方法没有考虑极端情况,例如:0 位就是最大元素。加入限制貌似唯一的作用就是少循环一遍

		int[] arr = {0, 3, 5, 7, 9, 2, 4, 6, 8, 10};
		//存储最大值的下角标
        int index = 0;
        /*
        先找出最大值
         */
        for (int i = 1; i < arr.length; i++) {
            if (arr[index] < arr[i]) {
            //把每次判断的较大值传递给index
                index = i;
            }
        }
        //交换元素
        int tmp = arr[index];
        arr[index] = arr[0];
        arr[0] = tmp;

2.找出数组中剩余最大值和下标为1的元素交换位

思路:

1.继续操作上面已经被操作过的数组
2.当前0位已经是全数组最大值了,不参与下面操作
3.index从1位开始,假设1位是当前最大值,不与自身比较
4.变量 i 从 2 开始遍历
5.如果 arr [ index ] 小于 arr [ i ] ,说明第二个元素是较大值。赋值给index
6.依次类推
7.得到剩余的最大值
8.最后交换index和1的值

        //index从1位开始
        index = 1;

        //i 从 2 开始
        for (int i = 2; i < arr.length; i++) {
            if (arr[index] < arr[i]) {
                index = i;
            }
        }
        //交换位置
        tmp = arr[index];
        arr[index] = arr[1];
        arr[1] = tmp;
        System.out.println (Arrays.toString (arr));

3.选择排序

根据: 找出数组中最大值和下角标为 0 的元素交换位置 找出数组中剩余最大值和下标为1的元素交换位

可知:

  • 可以快速找到(指定或者)下一位最大值,并且交换位置
  • 遍历一次可以找到一个最大值,并且这个最大值只移动一次
  • 每次遍历都会有一个最大值放在上一个最大值后面

推测

  • 多次循环可以依次将下一个最大值,放在上一个最大值的后面

4.选择排序实现

代码方法(未优化)

private static void extracted1 (int[] arr) {
        //选择排序
        for (int i = 0; i < arr.length - 1; i++) {
            int index = i;
            for (int j = i + 1; j < arr.length; j++) {
            //判断indx是否小于j,是则赋值给index,正序倒序取决于小于还是小于
                if (arr[index] < arr[j]) {
                    index = j;
                }
            }
            int temp = arr[index];
            arr[index] = arr[i];
            arr[i] = temp;
        }
    }
### 回答1: 周易是中国古代的经典之一,其中包含了很多卜筮算命的内容,对于许多人来说是一种很有趣的文化现象。而随着科技的不断发展,现在我们也可以利用计算机算法来进行周易算命。其中,Java是一种非常流行的编程语言,也被很多人用来开发算法Java算法大全是指Java编程语言中所包含的各种算法的集合。通过这些算法,人们可以对各种数据进行处理和分析,帮助解决各种问题。其中就包括了周易算命的算法,可以通过输入生辰八字等信息,计算出不同方面的预测结果。 一般来说,周易算命的算法包含三个大的方面,即易学、卜卦和神数。其中易学是指对易经文本进行解读,从中获取各种卜筮结果的方法;卜卦则是通过六十四卦和八卦来进行卜筮;神数则是根据日期和时间等信息来计算出各种预测结果。Java算法大全中包含的周易算命算法一般都是基于这三个方面开发的。 Java算法大全提供了很多不同的周易算命的实现方式,开发者可以根据自己的需要选择不同的算法。一些算法可能会涉及到比较复杂的数学计算,需要开发者对算法背后的数学原理进行深入的了解。同时,为了提高算法的效率和准确性,开发者也可以选择使用一些第三方库和工具,如Apache Math和JCL等。 总之,Java算法大全中包含了很多不同的周易算命算法,可以帮助人们快速地进行卜筮预测。同时,开发者也可以通过学习这些算法,了解到周易算命的文化内涵和数学原理。 ### 回答2: 周易是中国古代的一本著名的占卜算命书籍,也是中国古代哲学的重要组成部分。周易通过阐述八卦和六十四卦来揭示万物的变化和人生的命运。而Java是一种流行的编程语言,具有强大的计算和处理数据的能力。 Java算法大全是指Java语言下,各种常用算法的实现集合。在周易算命中,我们可以利用Java算法去实现卦的卜算和推演。给定初始卦象和占卜所需的参数,可以通过不同的算法来完成这一过程。 例如,可以使用递归函数来根据卦象的阴阳变化关系,计算出卜筮的结果。通过在Java中编写相应的代码,可以从用户输入的初始卦象开始,逐步生成六十四卦的变化序列。在每一步中,根据用户指定的查询值,可以判断当前卜筮的结果,从而推算出未来的命运。 此外,还可以借助Java中的排序算法,对生成的六十四卦序列进行排序,以便更方便地查找特定卦象和相关信息。 总之,借助Java算法大全的各种功能,我们可以更详细、准确地实现周易算命过程中的各种计算和推演。这样的实现不仅提高了算命的效率,也让周易算命更加科学、有效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值