冒泡排序
来源:互联网 发布:java企业微信发送消息 编辑:程序博客网 时间:2024/06/03 20:32
冒泡排序算法运行起来非常慢,但是在概念上它是排序算法中最简单的,因此冒泡排序算法在刚开始研究排序技术时是一个非常好的算法。算法:
从数组的最左边元素开始,比较相邻两个元素的大小,
如果左边元素大,则交换两个元素位置;
如果右边元素大,则什么也不做。
向右移一个位置,比较相邻两个元素的大小。
沿着这个数组,按照上面的方式比较下去,一直比较到数组的最右端。
这时,虽然没有把所以元素排序好,但是最大的元素已经安排在最右边位置了。
这个算法称为冒泡排序的原因:因为在算法执行的时候,最大的数据项总是“冒泡”到数组的顶端。
外部嵌套对已经拍好序的元素边界做控制,每一趟比较,都会增加一个拍好序的元素。for(int out=nElements-1;out>0;out--) {//注意,数组是从下标0开始,10个元素的数组,只能到第8个下标和第9个下标元素比较内部嵌套做比较和交换for(int in=0;in<out;in++) { if(a[i]>a[i+1]){ swap }}}package com.zcl.bubblesort;class ArrayBub{ private long[] a; private int nElems; public ArrayBub(int max) { this.a = new long[max]; this.nElems = 0; } public void insert(long value) { a[nElems] = value; nElems++; } public void display(){ for(int j=0;j<this.nElems;j++){ System.out.print(a[j] + " "); } } //执行顺序是:初始化--判断--函数体——然后for循环的第3句--判断——函数体---for循环的第三句--判断…… public void bubbleSort(){ int out,in; for(out=nElems-1;out>0;out--){ for(in=0;in<out;in++){ if(a[in]>a[in+1]){ swap(in,in+1); } } } } private void swap(int one,int two) { long tem = a[one]; a[one] = a[two]; a[two] = tem; } public static void main(String[] args) { int maxSize = 100; ArrayBub arr = new ArrayBub(maxSize); arr.insert(77); arr.insert(88); arr.insert(33); arr.insert(11); arr.insert(99); arr.insert(66); arr.insert(22); arr.insert(44); arr.insert(55); arr.display(); System.out.println(""); arr.bubbleSort(); arr.display(); }}
0 0
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 从零开始学jBPM6(二)- 工作台
- 从零开始学jBPM6(一)- 安装
- document对象(dom)和window对象(bom)
- 全排序的实现方法
- 另类的黑苹果“安装”方法。
- 冒泡排序
- BZOJ4735 你的生命已如风中残烛 UOJ#273 【清华集训2016】
- linux下C编程详解
- Linux下安装Mysql
- 【Android】解析.json格式文件
- 程序的装入和链接
- Java类中各成员的执行顺序
- Eclipse安装svn插件
- 微信开启服务器配置,确定是自己的服务器