常见排序算法 (二)-冒泡排序
2014-04-18 15:14
197 查看
标准的冒泡排序过程如下:
首先比较 a[1]与 a[2]的值,若 a[1]大于 a[2]则交换两者的值,否则不变。
再比较 a[2]与 a[3]的值,若 a[2]大于 a[3]则交换两者的值,否则不变。
再比较 a[3]与 a[4],以此类推,最后比较 a[n-1]与 a
的值。
这样处理一轮后,a
的值一定是这组数据中最大的。
再对 a[1]~a[n-1]以相同方法处理一轮。
共处理 n-1 轮后 a[1]、a[2]、……a
就以升序排列了。
过程举例:
初始元素序列: 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,只遍历一遍就完成了。
冒泡排序是经典的排序算法,因其过程像冒泡而得名。 也因容易理解,很多教科书都将其收入。 然而冒泡排序的效果确是各种算法里较为糟糕的,特别是当数据量大时。
首先比较 a[1]与 a[2]的值,若 a[1]大于 a[2]则交换两者的值,否则不变。
再比较 a[2]与 a[3]的值,若 a[2]大于 a[3]则交换两者的值,否则不变。
再比较 a[3]与 a[4],以此类推,最后比较 a[n-1]与 a
的值。
这样处理一轮后,a
的值一定是这组数据中最大的。
再对 a[1]~a[n-1]以相同方法处理一轮。
共处理 n-1 轮后 a[1]、a[2]、……a
就以升序排列了。
过程举例:
初始元素序列: 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,只遍历一遍就完成了。
冒泡排序是经典的排序算法,因其过程像冒泡而得名。 也因容易理解,很多教科书都将其收入。 然而冒泡排序的效果确是各种算法里较为糟糕的,特别是当数据量大时。
相关文章推荐
- java常见排序算法--顺序排序、冒泡排序、插入排序分析与比较
- 常见的排序算法(三) 交换排序(冒泡排序,快速排序)
- 常见的排序算法—冒泡排序
- 几种常见的排序算法及其复杂度——冒泡排序(一)
- 常见的五类排序算法图解和实现(交换类:冒泡排序,递归的快速排序)
- C++各种常见排序算法 冒泡排序,插入排序,快排序,选择排序,希尔排序
- 常见排序算法(一)(冒泡排序、插入排序)
- 常见的排序算法三——冒泡排序
- 常见排序算法:冒泡排序
- 常见排序算法的Java实现(1)——冒泡排序
- 常见的五类排序算法图解和实现(交换类:冒泡排序,递归的快速排序)
- 常见排序算法——选择排序、冒泡排序、插入排序和原地排序
- 常见排序算法整理(一)----冒泡排序、直接插入排序
- 常见的排序算法示例(1)-冒泡排序、快速排序
- 常见的五类排序算法图解和实现(交换类:冒泡排序,递归的快速排序)
- 常见的排序算法(三) 交换排序(冒泡排序,快速排序)
- 常见算法:C语言中的排序算法--冒泡排序,选择排序,希尔排序
- 几种常见的排序算法,选择排序,冒泡排序,希尔排序,堆排序,快速排序,归并排序,基数排序的比较
- 排序算法---最常见的冒泡排序
- 常见排序算法导读(5)[冒泡排序]