关于Java中的冒泡排序以及与VB中冒泡排序比较的个人思考

首先在自学Java的第9天,我学到了Java中的冒泡排序,于是自己动手按照高中时期的记忆写了一下,先上代码

package com.ycy;

import java.lang.reflect.Array;
import java.util.Arrays;

public class demo {
        public static void main(String[] args) {
                int[] array = {1, 9, 8, 3, 24, 12, 21, 3, 5};
                sort(array);
        }

        public static void sort(int[] a) {
                int temp = 0;
                for (int i = 0; i < a.length - 1; i++) {
                        boolean flag = true;
                        for (int j = a.length; j > i + 1; j--) {
                                if (a[j - 1] < a[j - 2]) {
                                        temp = a[j - 1];
                                        a[j - 1] = a[j - 2];
                                        a[j - 2] = temp;
                                        flag = false;
                                }
                        }
                        if (flag == true){
                                break;
                        }
                }
                System.out.println(Arrays.toString(a));
        }
}

这里我想说的是,在我自己写这个冒泡排序的时候,程序出现了许多次的报错,我的第一反应是:这么简单的排序怎么会错呢???但是尝试了很多次之后,仍然没法完成程序,于是我翻阅了高中时期学习信息技术的笔记并且通过Java的debug找到了原因


高中学习VB时的冒泡排序

For i = 1 to n-1
For j = n to i+1 step-1
If a(j)<a(j-1) Then
t = a(j)
a(j) = a(j-1)
a(j-1) = t
End If
next j
next i

对比程序我总结出自己出错的原因

那就是

对Java中For循环和数组下标的认识不够深入

对比VisualBasic我们可以发现,VB中的For循环有明确的起始和结束范围,并且下标时从一开始的,而Java中For循环的结束是根据boolean表达式来判断的,并且其数组的下标时从0开始的,这让我在编写的时候感到了极大的不适应
或许是高中的知识先入为主又太过深刻,导致一下子不能拐过这个弯,这个Java的冒泡排序我整整写了15分钟

在VB已经被彻底淘汰的今天,我不得不感叹人脑的奇妙,对于旧知识的难以忘怀,对于新知识的难以接受,更感叹浙江省教育给学生们带来的"荼毒"(此处其实言过其实了,因为自学一门编程语言本就是充满挑战的事,不应该将遇到的困难归咎于脑子里的“旧思想”)

总而言之,今天这个冒泡排序让我感慨良多,虽然是大学生了,但还是会回想起当初学信息技术的情景,继续加油吧!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值