JAVA-初步认识-第五章-数组-常见操作-冒泡排序

一. 冒泡排序

这里介绍了另一种排序的方法,冒泡排序法。选择排序法比较接近人们正常的思维,一个数据和剩下的说有数据比较。

冒泡排序法是临近的数据间进行比较,大的数据就调到右侧,角标1-2的数据对比,角标2-3的数据对比......

无论是选择排序还是冒泡排序都是先求最值。

冒泡排序法,是一轮一轮地进行左右两侧的数据进行对比。第一轮将所有数据中最大的数据移动到了最右侧,这种操作的核心在于:一直保证大的数据在右侧,那么经过不断地对调,最大的数据肯定在最后一位中。第一轮将最大的数据移动到了最右边,接下来相同的操作移动次大值到次右位.....

这样从左到右,得到的是从小到大的数据排列。也可以从右边开始,两两比较,大的值放左侧,一直往左边进行比较,从而保证最左侧为最大值,最终得到的从大到小的数据排列。

如果抛开技术层面不谈的话,一定要保证最值要位于两两比较的前进方向的位置上。

这里依旧采用的是大圈套小圈,怎么分析。

自己的初步分析:所有的操作都是建立在数组中数据的基础上的,无论是操作的次数还是操作的数据,这一点是要明确的。本题中,数据的个数是6个。先不管遍历时进行了什么操作,总共进行了5次遍历,分别是:0-5遍历,0-4遍历,0-3遍历,0-2遍历,0-1遍历。6个数,进行了5次遍历,定义一个变量来控制遍历的次数。每次遍历的内部,也进行了操作。比如说0-5遍历时,是0-1对比,1-2对比,2-3对比,3-4对比,4-5对比,总共进行了5次对比操作。第2次遍历,进行了4次对比;第3次遍历,进行了3次对比;也就是说每次遍历里面的对比次数也在变化,也需要定义一个变量来控制对比的次数,至于怎么对比,怎么操作先不管。→确定的数组,就决定了确定次数的遍历,也会确定遍历里面对比的次数。这个有点反斜三角的意思,一个变量控制行数,一个变量控制列数,由于列数在变化,导致列变量的循环次数还要借助行变量来控制。

经过视频讲解后,也能写出源代码。感觉这是脱胎于for语句嵌套,形成反斜三角的题目。

视频接着讲解了从右边往左边进行的冒泡排序法,我们自己也尝试一下,(本质上还是反斜三角的另一种写法)

视频的解法,虽然结果是正确的,但是做法仍旧是从角标0开始,将较大的值往右移动。我以为的从右侧开始冒泡,是将较小的值往左移,毕竟从右边开始移动。

时间: 2024-10-28 15:37:19

JAVA-初步认识-第五章-数组-常见操作-冒泡排序的相关文章

JAVA-初步认识-第五章-数组-常见操作-遍历

一. 数组操作 定义好数组后,要存储在数组中的数据拿出来操作.怎么取? 对于数组操作最重要的操作有两种,一个是存,另一个是取.同时,基于这两个操作又衍生出常见的功能性操作. 存取的核心思想:对角标的操作. 二. 之前要求的都是输出数组中的单个数据,如果要求输出数据中的全部数据,仔细观看下面的操作.为了提高复用性,可以采用循环结构来书写语句,while和for都可以,但是for定义的局部代码块可以释放变量.数组操作完,就结束了,称为了垃圾,采用for更好. 如果数组内的元素数目特别多,我们要想全部

JAVA-初步认识-第五章-数组-常见操作-选择排序

一. 排序 元素有很多的情况下,我们都希望元素按照指定的方式有一个顺序,比如说由小到大.排序的方式有很多种,我们讲解其中一种. 例子: 对上面的数组中的元素排个序,从小到大.这个想不出来,之前谈论的是两个数比较,得到大的数. 听了视频的一点讲解,突然有了思路,角标0和角标1进行比较后,将元素的大小做了调换,再继续将角标0和剩余角标的元素进行比较,最终保证角标0中的元素是所有角标中最小的.接着重复将角标1和后面角标中的元素进行比较,再得出一个最小的值,如此往复.这里排序的时候,有一点是要注意的,角

JAVA-初步认识-第五章-数组-常见操作-最值

一. 最值 在视频没有讲解怎么做之前,我先提供一个思路.得出最值肯定是一个一个地比较出来的,这种多次的比较操作,那肯定用到循环结构.每一次操作都要得出两个数中的最大值,也就是说还有判断的if语句.相当于说在循环结构语句中嵌套if判断语句.和视频的讲解对比,我唯一欠缺的是没有说明每次比较的数值是个变量. 同视频讲解对比,自己的思路中没有提到功能化函数.我推测的原因是,需求是要获取最大值,而非我想像的输出最大值,输入数组直接得到最大值,这是一种功能. 注解:这上面求解最值,有两种思路.一种是拿元素进

JAVA-初步认识-第五章-数组-常见操作-排序位置

一. 本节是接着前面的冒泡排序的两种书写格式而来的,是以视频中的两种书写格式为基础讲解的,对于我自己琢磨的不适合.注重视频中讲解的思想. 视频中两种书写格式中,内循环都是一样的,为了他提高复用性,将相同的内循环里的执行语句给功能化. →上面理解错了,无论是选择排序还是冒泡排序,有一个通用的操作,就是调换不同索引位置上的数据. 先不对这个做说明, 二. 深入研究两种排序的源代码书写 经过DOS检验没有问题. 这里再对冒泡排序内循环语句的书写做一个解析,(这个数组操作的这一块知识点,均是建立在循环结

JAVA-初步认识-第五章-数组-常见操作-排序的性能问题

一. 这里对前面的选择排序操作进行了深化,之前讨论的选择排序是将0角标上的数据和后面角标的数据一个个进行对比,不断地调换数据的位置,直到0角标上的数据是整个数组中的最小值.由于调换的次数较多,现在引发一个疑问,能不能直接将0角标的数据和最小数据进行对换(前提是知道最小数据的角标是多少). 之前的例子里,选择排序中,进行了三次比较调换数据,才使得角标0上的数据是最小的.现在要换个思路来解决相同的问题. 具体的操作是:先定义两个变量,为什么要定义两个变量?一个变量记录用于比较的元素num,一个变量记

java学习第05天(数组常见操作、数组中的数组)

(4)数组常见操作 a.遍历取值 class ArrayDemo3 { public static void main(String[] args) { //System.out.println("Hello World!"); //格式1 /* 需要一个容器,但不明确容器的具体数据. */ //int[] arr = new int[8]; //格式2 /* 需要一个容器,储存一直的具体数据. */ //元素类型[] 数组名 = new 元素类型[](元素,元素,....); //i

数组常见操作、Arrays类、基本数据类型包装类

数组常见操作 冒泡排序法 选择排序法 二分查找法 Arrays类 成员方法示例 基本数据类型包装类 基本类型和包装类的对应 Integer类举例 装箱和拆箱 int转换成String类型 String类型转换成int类型 原文地址:http://blog.51cto.com/13987153/2308625

Java基础知识二次学习--第五章 数组

第五章 数组 时间:2017年4月26日15:11:30~2017年4月26日15:15:54 章节:05章_01节  视频长度:09:30 内容:一维数组的内存分析 心得: Java中数组是引用类型 栈里面存的数组的引用 实际对象在堆内存里面 (C与C++是分配在栈里的) 内存图: 元素为引用数据类型的数组 引用类型的数组如上图 时间:2017年4月26日15:16:22~2017年4月26日15:19:00 章节:05章_02节  视频长度:05:25 内容:数组元素的创建与使用 心得: 首

java学习之第五章编程题示例(初学篇)

1 /* 2 Animal.java 3 */ 4 package animal; 5 6 public abstract class Animal { 7 public abstract void cry(); 8 public abstract String getanimalName(); 9 } 1 //Dog.java 2 package animal; 3 4 public class Dog extends Animal 5 { 6 7 String aa="旺旺"; 8