稳定排序:冒泡排序
来源:互联网 发布:lcd1602只亮不显示数据 编辑:程序博客网 时间:2024/06/05 02:18
实现思路:不停地使数组中的相邻的左右两个元素对比大小,大的元素往右移,因为是左右交换,所以如果他们相等,肯定不会交换。所以是稳定的。
【平均时间复杂度】:O(n^2);
【最优情况】:O(n^2) 已经排好序了,不用交换元素,时间花销n(n-1)/2
【最坏情况】:O(n^2),逆序,时间花销3n(n-1)/2
【适用范围】:适用于排序小列表。
//javapublic class bubble_sort{ public static void main(String[]args){ int a[]={12,6,5,7,1}; int tmp=0; for(int i=0;i<a.length;i++){//第i趟 for(int j=0;j<a.length;j++){//第j个元素 if(a[j]>a[j+1]){ tmp=a[j]; a[j]=a[j+1]; a[j+1]=tmp;}}System.out.print(a[i]+" "); }}}
下面是类似冒泡排序的一种排序方法
注意不要搞混!!!
冒泡排序是比较相邻的元素!!!
//不是冒泡排序!!!public class Sort{public static void main(String[]args){int tmp=0;int a[]={12,6,5,7,1}for(int i=0;i<a.length;i++){ for(int j=i+1;j<a.length;j++){ if(a[i]>a[j]){ tmp=a[i]; a[i]=a[j]; a[j]=a[i];}}}}}
下面展示一下它的排序情况
显然,它不是左右相邻的交换,所以它不是冒泡排序!!!
//PHP$arr=array(12.6,5,7,1);$len=count($arr);//数组arr的长度$tmp=0;function bubbleSort($arr){ for(i=0;i<$len;i++){ //需要冒泡的轮数 for(j=0;j<$len-$i-1;j++){ //每轮冒泡的次数 if($arr[j]>$arr[j+1]){ $tmp=$arr[j]; $arr[j]=$arr[j+1]; $arr[j+1]=$arr[j];}}}return $arr;}
心得:其实只要懂得排序的基本思想,无论哪种语言都一样实现,只是表达方式不同
1 0
- 稳定排序:冒泡排序
- hdoj 1872 稳定排序 【冒泡】
- 交换排序之 冒泡排序(优化) (稳定)
- 经典排序算法----冒泡排序算法及其优化(稳定)
- 稳定排序
- 稳定排序
- 稳定排序
- 稳定排序
- 稳定排序
- 稳定排序
- 稳定排序
- 稳定排序
- 稳定排序
- 稳定排序
- 稳定排序
- 稳定排序
- 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, 冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。
- 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。
- 脚本作业(test.sh)
- Lintcode 将数组重新排序以构造最小值
- 通过Spring Resource接口获取资源
- 8皇后问题
- javax.servlet.ServletException: java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
- 稳定排序:冒泡排序
- 编写程序,判断输入的字符串是否回文
- unity wav 格式音频转换为二进制文件
- 开发实用---修改Eclipse快捷注释的模板
- JSONCPP操作帮助
- 原始类型.Class 及 Class.forName(String class) 与 类名.class 的区别
- Linux下忘记MySQL的root密码的解决方法
- 二叉树怎样序列化才能重建
- JVM 学习笔记(三) 垃圾收集器与内存分配策略