码农如何才能快速解决乱码、bug等问题?这篇干货你一定要看!

黑马程序员视频库

播妞QQ号:3077485083

传智播客旗下互联网资讯、学习资源免费分享平台

冒泡排序是Java中非常经典的一种排序方法,可以将多个数字进行升序排序,效率比较高。今天播妞和大家一起来看看冒泡排序的具体思路,便于在学习Java码代码时思路清晰,少点bug~

冒泡排序的原理

两个相邻的数比较大小,将两个数中较大的数往右边放,小的往左边放。

冒泡排序的图解

1.首先定义一个数组:int[] arr = {4,2,5,3,1}

2.比较的图解是这样的:

码农如何才能快速解决乱码、bug等问题?这篇干货你一定要看!_第1张图片

冒泡排序的思路解析

依次比较前后两个数的大小,如果后面的比前面的数小,那么直接将小的放在左边,大的数放在右边,以此类推。

例如我们定义的数组:int[] arr = {4,2,5,3,1}

第一圈比较

1.用arr[0]和arr[1]进行比较,那么2比4小,那么2往左边移一位,4往右边移一位;

2.然后用arr[1]和arr[2]进行比较,现在4比5小,所以不动;

3.再用arr[2]和arr[3]进行比较,现在5比3大,所以将3往左边移动一位,5往右边移动一位;

4.再用arr[4]和arr[4]进行比较,现在5比1大,所以将1往左边移动一位,5往后边移动一位,这样就把最大的数放到了最右边*现在通过比较并且移动之后,数组arr中的元素变成了{2,4,3,1,5}。

第二圈比较

1.用arr[0]和arr[1]进行比较,那么2比4小,所以不用动;

2.用arr[1]和arr[2]进行比较,那么4比3大,所以将3往左边移动一位,4往右边移动一位;

3.用arr[2]和arr[3]进行比较,那么4比1大,所以将1往左边移懂一位,4往右边移动一位;

*由于最大的已经在最右边了,所以不用和arr[4]进行比较了,现在通过第二圈比较之后的数组元素变成了{2,3,1,4,5}。

*注意,现在第二圈比较的次数少了一次

第三圈比较

1.用arr[0]和arr[1]进行比较,那么2比3小,所以不用动;

2.用arr[1]和arr[2]进行比较,那么3比1大,所以将1往左边移动一位,3往右边移动一位*现在通过第三圈的比较,数组中的元素变成了{2,1,3,4,5} *注意,现在第三圈比较的次数又少了一次。

第四圈比较

1.用arr[0]和arr[1]进行比较,那么2比1大,所以将1往左边移动一位,2往右边移动一位。

*现在用过第四圈的比较,数组中的元素变成了{1,2,3,4,5},这样就比较完成了。

那么通过这4圈的比较,可以确定我们数组的长度为5,但是我们比较了4次,所以我们可以确定,我们循环比较了4圈。

所以,外层for循环可以确定为for(int i = 0,i

每一圈比较的次数都会比上一圈的比较次数少1次,那么可以推断出来。

a)进行第一圈元素比较时,内层循环次数为数组长度 - 1

b)进行第二圈元素比较时,内层循环次数为数组长度 - 2

c)依次类推,得出结论:进行第n圈元素比较时,内层循环次数为数组长度 - n

那么这个n的变化特点其实是跟外层for循环中的i是一致的,所以我们内存for循环可以确定为 for(int i = 0,i

形成代码

//冒泡排序

public static void bubbleSort(int[] arr) {

//功能

//外层循环用来控制数组循环的圈数

for (int i = 0; i < arr.length-1; 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;

}

}

}

}

冒泡排序总结

以上是冒泡排序的具体思路分析,学习冒泡排序需要捋清楚其过程,主要是分析冒泡排序是怎么比较的。

知道了冒泡排序的原理以及形成了代码,很多人也难免在敲代码的过程中出现一些状况,比如出现乱码的情况。

码农如何才能快速解决乱码、bug等问题?这篇干货你一定要看!_第2张图片

程序员的生活中,从来不缺乱码的状况,缺少的是一眼发现乱码原因的能力。

播妞给大家推荐一个可以灵活解决乱码问题的课程,小白也能学会哦。(文末附有领取方式)

课程名称

详讲编码与解码,灵活解决乱码难题

课程简介

工作中,很多开发者面对乱码问题,总是难以解决,以至于搜索各种资料,然而并不理解,死记硬背,当再次出现此类问题时,不能灵活的解决,并且花大量的时间搜索资料。这就是本课程产生的背景,本课程主要讲解了为什么出现编码与解码,哪些常见的编码表,每种编码表如何解析,以及出现乱码问题的原理与解决方案,同时演示了Java中常见的乱码现象,并分析了乱码原因,总结了解决方案。

同时,课程中还演示了一些日常工作中习以为常的习惯的原理,大家通过本课程的学习,便可以灵活并轻松的解决常见的乱码问题。

适用人群

1.零基础的初学者。这一类人群可能学习本课程时理解不一定很深刻,毕竟很多现象初学者没有遇到过,但是对将来的全面学习编程起到铺垫作用。

2. 有一定的Java基础,这一类人群通过对本课程的学习,会对编码解码乱码形成很强的知识体系,并且可以灵活应对今后的乱码问题。

课程亮点

系统的学习乱码产生的原因,打破了很多开发者对解决乱码问题死记硬背的格局,通过学习本课程,开发者可以根据开发中产生的乱码情况自己分析原理,灵活的解决乱码问题。

本课程深刻解析了各种现象的原理,比如:

1.为什么出现Unicode的编码

2.为什么windows的简体中文系统 默认使用的GBK编码而不是Unicode

3.为什么我们开发环境都是UTF-8而不是Unicode默认的UTF-16

4.为什么有大端和小端之分

5.为什么有BOM

6.为什么tomcat的默认字符缓冲区编码是ISO-8859-1编码

7.java的运行参数 file.encoding有什么作用

8.字符流复制文件的原理

课程内容

章节一  什么是编码与解码

章节二  常见的编码表

章节三  Java的char字符

章节四  String类

章节五  IO流-字符流    

获取以上资料

关注:黑马程序员视频库

后台回复“052”即可

↓↓↓

推荐阅读:

  • 掌握Java还不够?零基础get新技能,月薪高达18k

  • 传统行业or互联网?他用面试经验告诉你,人生没有不可能的开始

  • 大厂资深架构师,带你7个月对标阿里P7,年薪破50w

我就知道你“在看”

你可能感兴趣的:(码农如何才能快速解决乱码、bug等问题?这篇干货你一定要看!)