交换排序——冒泡排序
来源:互联网 发布:清除localstorage数据 编辑:程序博客网 时间:2024/06/07 03:45
基本思想:
在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
操作过程:
这个没什么好说的,大家都很清楚。
算法的实现:
public static void main(String[] args) {// TODO Auto-generated method stubint a[]={3,5,2,9,7,1,4};int n=a.length;for(int i=0;i<n;i++){for(int j=0;j<n-i-1;j++){if(a[j]>a[j+1]){int temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}}for(int k=0;k<n;k++){System.out.println(a[k]);}}
算法的改进:
传统冒泡排序中每一趟排序操作只能找到一个最大值或最小值,我们考虑利用在每趟排序中进行正向和反向两遍冒泡的方法一次可以得到两个最终值(最大者和最小者) ,从而使排序趟数几乎减少了一半。
public void improveBubble(int a[],int length){int i=length-1;while(i>0){int pos=0;for(int j=0;j<i;j++){if(a[j]>a[j+1]){pos=j;int temp=a[j];a[j]=a[j+1];a[j+1]=temp;}i=pos;}}}
参考资料:http://blog.csdn.net/hguisu/article/details/7776068
这篇博客的第一种改进算冒泡算法有问题,其实实际上原始冒泡排序就是在已经排好序之前的数组排,根本就不用再设置标志位了。
0 0
- 交换排序——冒泡排序
- 交换排序——冒泡排序
- 6.交换排序——冒泡排序
- 交换类排序——冒泡排序
- 交换排序——冒泡排序
- 交换排序——冒泡排序
- 交换排序——冒泡排序
- 交换排序——冒泡排序
- 交换排序——冒泡排序
- 排序算法之交换排序——冒泡排序
- 排序:交换排序——冒泡排序法
- 排序——交换排序之冒泡排序
- 交换排序(冒泡排序—改进、快速排序)
- 交换排序:冒泡排序
- 交换排序-冒泡排序
- 交换排序-冒泡排序
- 交换排序-冒泡排序
- 冒泡排序-交换排序
- bzoj1500 修改数列 区间splay树讲解
- 前端学习的结业作业
- MySQL对查询结果排序
- opengl画会动的木头人(stick man)
- Hadoop之—— WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform...
- 交换排序——冒泡排序
- 数据结构(c++)(3)--简单的计算器
- 3DES和SHA-1
- svg中path标签的用法
- 辨析离线算法与在线算法
- Mac 下 制作USB Clover引导
- LeetCode 258. Add Digits
- 如何在只听过一次的情况下用百度找到歌名
- 【笔记】使用Spring表单标签