首页 > 代码库 > 排序算法总结之冒泡排序
排序算法总结之冒泡排序
冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它的基本思想就是两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
例如:初始序列3,6,4,2,11,10,5;从头开始,两两相比,若a[i]>a[i+1],则将两者交换;
从上面的排序过程来看,其实在第2趟结束后,数据序列就已经是有序的了,因此可以提前结束循环,从而避免3~6趟的不必要的比较。
Java实现:
package com.liuhao.sort; import java.util.Arrays; public class BubbleSort { public static void bubbleSort(DataWrap[] data) { System.out.println("开始排序"); int arrayLength = data.length; for (int i = 0; i < arrayLength - 1; i++) { boolean flag = false; //记录某趟是否发生元素交换 for (int j = 0; j < arrayLength - 1 - i; j++) { // 处的元素值大于j+1处的,j处data要往后沉 if(data[j].compareTo(data[j+1]) > 0){ DataWrap tmp = data[j]; data[j] = data[j+1]; data[j+1] = tmp; flag = true; } } System.out.println(Arrays.toString(data)); //如果某趟没有发生交换,说明序列已经有序,就不需要进行之后的比较了 if(!flag){ break; } } } public static void main(String[] args) { DataWrap[] data = http://www.mamicode.com/{>排序效果:冒泡排序的时间效率是不确定的:最好的情况下,初始序列已经处在有序状态,执行一趟冒泡即可,做n-1次比较,无需进行任何交换;但在最坏的情况下,初始序列完全逆序,算法要执行n-1趟冒泡,第i趟做n-i次比较,执行n-i-1次对象交换,此时比较总次数为n*(n-1)/2,数据移动总次数为n*(n-1)*3/2。
冒泡排序算法的空间效率很高,只需一个附加程序单元用于交换,其空间效率为O(1)。
同时冒泡排序是稳定的
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。