【算法】冒泡排序
来源:互联网 发布:数据科学网 编辑:程序博客网 时间:2024/06/05 16:04
冒泡排序是一个常见的排序算法,它的思想就是重复交换相邻的两个元素,如果这两个元素反序就交换他们。每次从第一个元素到最后一个待排序的元素,每趟冒泡我们都会把最大(或者最小)的元素找到。
public class BubbleSort { public static void bubble(int a[],int n) { //冒泡排序,每次将最大的冒到后面 for (int i = 0; i < n - 1; ++i) { //这个循环就是从第一个开始,往后冒 for (int j = 0; j < n - i - 1; ++j) { if (a[j] > a[j + 1]) { int tmp = a[j]; a[j] = a[j + 1]; a[j + 1] = tmp; } } } } //改进后的冒泡排序----加入判断如果初始 static void Bubble_1 ( int r[], int n) { //对冒泡排序常见的改进方法是加入一标志性变量exchange, // 用于标志某一趟排序过程中是否有数据交换, // 如果进行某一趟排序时并没有进行数据交换, // 则说明数据已经按要求排列好, // 可立即结束排序,避免不必要的比较过程 int i= n -1; while ( i> 0) { int pos= 0; //每趟开始时,无记录交换 for (int j= 0; j< i; j++) if (r[j]> r[j+1]) { pos= j; //记录交换的位置 int tmp = r[j]; r[j]=r[j+1];r[j+1]=tmp; } i= pos; //为下一趟排序作准备 } } //也可以在一次冒泡过程中,选出最大的值和最小的值。 // 这样可以将排序趟数减少一半 public static void Bubble_2 ( int r[], int n){ int low = 0; int high= n -1; //设置变量的初始值 int tmp,j; while (low < high) { for (j= low; j< high; ++j) //正向冒泡,找到最大者 if (r[j]> r[j+1]) { tmp = r[j]; r[j]=r[j+1];r[j+1]=tmp; } --high; //修改high值, 前移一位 for ( j=high; j>low; --j) //反向冒泡,找到最小者 if (r[j]<r[j-1]) { tmp = r[j]; r[j]=r[j-1];r[j-1]=tmp; } ++low; //修改low值,后移一位 } } public static void main(String[] args) { int a[]={3,12,44,5,53,61,67,84,7,88,90}; bubble(a,a.length); for(int i=0;i<a.length;i++) { System.out.println(a[i]); } }}
以上就是对冒泡算法的代码总结。和直接插入排序对比,可以发现直接插入排序,是从待排序中拿出最大(或者最小的数)然后插入到已经排序好的序列中,这个的插入跳跃性比较大,它的交换则是从待排序中插入到已经排序好的序列中,而冒泡排序就是相邻两个元素的交换,如果反序则交换,否则就不交换。
阅读全文
0 0
- 排序算法--冒泡排序
- 排序算法-冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法-冒泡排序
- 排序算法 冒泡排序
- 排序算法-- 冒泡排序
- 排序算法-冒泡排序
- 排序算法---冒泡排序
- 排序算法-冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法 冒泡排序
- 排序算法-冒泡排序
- 学习笔记GAN001:生成式对抗网络,只需10步,从零开始到调试
- WPF炫酷界面设计
- 网络系统漏洞安全攻防
- php获取父级栏目下的所有子栏目
- html5 新元素.... 有序无序
- 【算法】冒泡排序
- 使用Django进行微信公众号开发
- 【CUGBACM15级BC第25场 B】hdu 5155 Harry And Magic Box
- opengl 写入数据
- Transimission 操作及设置
- 教程:基于访问控制的ABAP CDS视图权限
- Mybatis中的 ${ } 和 #{ }的区别
- HTML表格与框架
- kotlin使用com.alibaba.fastjson.JSONException: default constructor not found