冒泡排序
来源:互联网 发布:俄罗斯社交软件 编辑:程序博客网 时间:2024/06/03 22:36
之所以叫冒泡排序,是因为排序的过程就像气泡由水底一直往水面升。
假设如下数组(A):
数组34521下标01234
第一次排序过程:
1、3<4:不变,结果:A={3,4,5,2,1}。
2、4<5:不变,结果:A={3,4,5,2,1}。
3、5>2:5与2交换位置,结果A[2]=2,A[3]=5,A={3,4,2,5,1}。
4、5>1:5与1交换位置,结果A[3]=1,A[4]=5,A={3,4,2,1,5}。
第一次排序结果:
数组34215下标01234
第一次排序进行了4次比较。
第二次排序结果:
数组32145下标01234
第二次排序,只需要做3次比较即可。第三次排序结果:
数组21345下标01234
第四次排序结果:
数组12345下标01234
算法复杂度计算:由(N-1)+(N-2)+…+1=N*(N-1)/2得出O(N*N),其中N为数组数据项。所以冒泡排序的算法复杂度:O(N*N)。 以下为Java实现:
public class BubbleSort {static int[] array;//冒泡排序public static int [] action() {int temp;//每一次循环(i)都将一个最大值放到数组最后面,下一个循环(j)将减少一次对比for (int i = array.length-1; i >1; i--) { for (int j = 0; j < i; j++) {int left = array[j];int right = array[j + 1];if (right < left) {temp = right;array[j+1] = left;array[j] = temp;}}}return array;}public static void main(String[] args) {array=new int []{40,5,1,7,10,3,9,12,40};int [] result=action();for (int string : result) {System.out.println(string);}}}
0 0
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 006 [翻译] Haneke(一个Swfit iOS缓存类)
- [Azure] 使用 Visual Studio 2013 管理中国版 Azure 订阅
- Facelets标签
- 对弗洛伊德(Floyd)算法的个人理解
- easyui datagrid排序
- 冒泡排序
- oracle触发器
- HDU - 4803 Poor Warehouse Keeper(贪心)
- MCGS---用户自定义设备驱动
- NT_iOS笔记—iOS图片显示2_某一个界面支持横屏()
- 整个DIV水平和垂直居中于屏幕
- AutoMapper搬运工之配置
- 【Unix/Linux】【命令】【网络操作工具】网络测试工具 —— ping命令
- 游戏版本号之versionCode和versionName