Java语言冒泡排序详解
来源:互联网 发布:plsql查看数据库表 编辑:程序博客网 时间:2024/06/10 03:34
基于很多同学在面试的过程中被问到一些基础的算法,导致整个面试过程不理想,而基础的算法和数据结构往往都是一些大公司任职的基本要求,这也严重影响拿offer的成功率。接下来的一段时间我将陆续对一些简单的基础的算法和数据结构进行详细说明。我将从排序算法说起,下面从冒泡排序开始说起。
排序结果:数据从小到大。
首先说一下冒泡排序的思想:每次比较从第一个数据开始,数据两两比较,如果左边数据比右边数据大,则交换左右数据。继续比较。一次比较结束出现一个最大值在最后一个位置。
思想就是代码的体现,掌握思想写代码66的。
我以5个数据为例集合冒泡排序的思想进行图解说明。
数据为 8、5 、2 、6 、1。
第一次比较过程如下:
简单说明:
每次比较从第一个数据开始,也就是8开始。数据两两比较,也就是8和5进行比较。如果左边数据比右边数据大,则交换左右数据,也就是8比5大,8和5的位置交换。继续比较,也就是交换位置后,8继续和后面的数据比较。当最大值8出现在了最后一个位置时,第一次比较结束。当下一次比较,8已经是最大值就没必要参与比较。
第二次比较过程如下:
简单说明:第二次比较过程和第一次比较过程是一致的,第二次比较最大值6出现在最后一个位置。下一次比较,最大值6不参与比较。
第三次比较过程如下:
简单说明:第三次比较最大值5出现最后一个位置,下次比较,5不参与比较。
第四次比较过程如下:
简单说明:第四次比较最大值2出现最后一个位置。至此,所有数据排序过程结束。
文字与图理解完毕,直接上代码演示。
public static void main(String[] args) { // 定义10个数据的数组 int data[] = new int[10]; // 初始化数组 initData(data); // 打印排序前数组数据 print(data); // 冒泡排序 bubbleSort(data); // 打印排序后的数组数据 print(data); } /** * 冒泡排序:每次比较从第一个数据开始,数据两两比较,如果左边数据比右边数据大,则交换左右数据。继续比较。一次比较结束出现一个最大值在最后一个位置。 * * @param data */ private static void bubbleSort(int[] data) { // 比较的是次数 for (int i = data.length - 1; i > 0; i--) { // 每次比较冒泡的过程(查找最大值的过程),每次从第一个数据开始,因此j每次都是从零开始。 //从图解中可以看出,随着比较次数的增多,冒泡的过程逐渐减少,因此i的值是随着比较的次数增多而减少。 //反推i的初始值为最大,又由于5个数据比较次数为4次,可得出i的初始值为数据个数-1。 for (int j = 0; j < i; j++) { // 数据交换 if (data[j] > data[j + 1]) { // 交换 int temp = data[j]; data[j] = data[j + 1]; data[j + 1] = temp; } } } } // 该方法随机生成1-100的随机数 private static void initData(int[] data) { for (int i = 0; i < data.length; i++) { data[i] = (int) Math.ceil(Math.random() * 100); } } // 该方法用于打印数组数据 private static void print(int[] data) { System.out.print("["); for (int i = 0; i < data.length; i++) { if (i != data.length - 1) { System.out.print(data[i] + ","); } else { System.out.println(data[i] + "]"); } } }
下一篇:选择排序详解,敬请期待…………..
阅读全文
0 0
- Java语言冒泡排序详解
- java冒泡排序详解
- 冒泡排序 -JAVA详解
- 冒泡排序java语言描述
- Java冒泡排序代码详解
- Java语言基础-排序算法-冒泡排序
- 排序算法之冒泡排序--Java语言
- 冒泡排序法的Java语言描述
- JAVA语言编写的冒泡排序算法
- 冒泡排序Java语言实现及其优化
- Java语言基础-11.冒泡排序
- 冒泡排序——java语言
- Java语言实现经典冒泡排序算法
- java语言实现冒泡排序、简单选择排序、反转排序
- Java冒泡排序详解和代码
- 排序详解:冒泡排序
- java实现冒泡排序,选择排序,插入排序算法详解
- Java语言实现的各种排序源代码--冒泡排序
- 为什么写这个博客呢。。。。
- 设计模式理解之工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)
- Sqoop将MySQL数据库表中数据导入到HBase表中
- jQuery2
- 代码传奇 | 身价10亿的程序员 雷军当年也为他打工——WPS之父 求伯君
- Java语言冒泡排序详解
- ubuntu以root身份进入图形管理界面
- Matlab数据分析练习-平滑处理
- 为你的EditText添加一个烟花效果
- TCP-server/client实现字符大写转换
- 算法练习(30):Edit Distance
- 吴恩达机器学习课程之参数拟合
- Codeforce 9c Hexadecimal's Numbers
- eclipse java通过jackess操作access数据库