常见排序算法 (二)-冒泡排序
来源:互联网 发布:访客网络设置 编辑:程序博客网 时间:2024/05/29 03:48
标准的冒泡排序过程如下:
首先比较 a[1]与 a[2]的值,若 a[1]大于 a[2]则交换两者的值,否则不变。
再比较 a[2]与 a[3]的值,若 a[2]大于 a[3]则交换两者的值,否则不变。
再比较 a[3]与 a[4],以此类推,最后比较 a[n-1]与 a[n]的值。
这样处理一轮后,a[n]的值一定是这组数据中最大的。
再对 a[1]~a[n-1]以相同方法处理一轮。
共处理 n-1 轮后 a[1]、a[2]、……a[n]就以升序排列了。
过程举例:
初始元素序列: 8 3 2 5 9 3* 6
第一趟排序: 3 2 5 8 3* 6 【9】
第二趟排序: 2 3 5 3* 6 【8 9 】
第三趟排序: 2 3 3* 5 【 6 8 9】
第四趟排序: 2 3 3* 【5 6 8 9 】
第五趟排序: 2 3 【3* 5 6 8 9 】
这样,对于某段有序的序列,下一次遍历时就不用再比较了。最理想的是整个序列本就有序,如此,k = 0,只遍历一遍就完成了。
冒泡排序是经典的排序算法,因其过程像冒泡而得名。 也因容易理解,很多教科书都将其收入。 然而冒泡排序的效果确是各种算法里较为糟糕的,特别是当数据量大时。
首先比较 a[1]与 a[2]的值,若 a[1]大于 a[2]则交换两者的值,否则不变。
再比较 a[2]与 a[3]的值,若 a[2]大于 a[3]则交换两者的值,否则不变。
再比较 a[3]与 a[4],以此类推,最后比较 a[n-1]与 a[n]的值。
这样处理一轮后,a[n]的值一定是这组数据中最大的。
再对 a[1]~a[n-1]以相同方法处理一轮。
共处理 n-1 轮后 a[1]、a[2]、……a[n]就以升序排列了。
过程举例:
初始元素序列: 8 3 2 5 9 3* 6
第一趟排序: 3 2 5 8 3* 6 【9】
第二趟排序: 2 3 5 3* 6 【8 9 】
第三趟排序: 2 3 3* 5 【 6 8 9】
第四趟排序: 2 3 3* 【5 6 8 9 】
第五趟排序: 2 3 【3* 5 6 8 9 】
第六趟排序: 2 【3 3* 5 6 8 9 】
public class Main {public static void main(String[] args) {int[] a = {43, 5, 6, 78, 90, 3};BubbleSort(a);for(int i=0; i<a.length; i++) {System.out.println(a[i]);}}public static void BubbleSort(int a[]) {for (int i = 0; i < a.length - 1; i++) {for (int j = 0; j < a.length - i - 1; j++) {if (a[j] > a[j + 1]) {int temp = a[j + 1];a[j + 1] = a[j];a[j] = temp;}}}}}
这样,对于某段有序的序列,下一次遍历时就不用再比较了。最理想的是整个序列本就有序,如此,k = 0,只遍历一遍就完成了。
冒泡排序是经典的排序算法,因其过程像冒泡而得名。 也因容易理解,很多教科书都将其收入。 然而冒泡排序的效果确是各种算法里较为糟糕的,特别是当数据量大时。
0 0
- 常见排序算法 (二)-冒泡排序
- Java常见排序:(二)冒泡排序
- 常见算法之排序一【冒泡排序】
- 常见排序算法之冒泡排序
- 常见排序算法之冒泡排序
- 排序算法---最常见的冒泡排序
- 常见的排序算法—冒泡排序
- 常见排序算法(二)
- 算法(二)冒泡排序
- 常见排序-冒泡排序
- 排序算法之二 冒泡排序
- 排序算法(二):冒泡排序
- 排序算法(二)冒泡排序
- <算法>排序(二)冒泡排序
- 排序算法之二---冒泡排序
- 排序算法之二----冒泡排序
- 排序算法(二)冒泡排序
- 排序算法(二) 冒泡排序
- LeetCode-Linked List Cycle
- 高仿今日头条(转载)
- kvm和qemu的关系
- asdf
- Sql日期函数
- 常见排序算法 (二)-冒泡排序
- 吴莫愁新专辑出炉 承认哈林老师是她生命中的贵人
- 设置VPC虚拟机与主机共享上网
- 欧拉函数(Euler)
- 使用VMware workstation 9做虚拟机克隆时,网卡的MAC地址会不会重复?
- 【iOS】常用正则表达式即使用方法
- FTP下载 550 Failed to open file 问题解决
- Mac锁屏 设置快捷键
- -3+1-c#求解-英雄会在线编程题目