排序---冒泡
来源:互联网 发布:curl post json body 编辑:程序博客网 时间:2024/06/06 20:10
很久没写博客,也没有好好总结一下这段时间做的东西;打算每周至少实现一个算法,首先从简单的排序开始,冒泡排序啊,选择排序等等;希望自己能坚持下去,把自己的算法和数据结构抓起来,夯实基础;废话不多说,开始吧:先从冒泡排序下手:
规则:1,比较两个数据或者对象; 2,如果第一个大就交换位置;3,向下一个位置移动一位;
要排序的对象有N个,那么第一趟就要比较N-1次 ,平均移动(N-1)/2次,第二趟就比较N-2次,平均移动(N-2)/2......
实现思路:最终是将最小的放到开始,最大的放到最后,用两个变量out,in来计数,外层for循环中的out,从最后开始,即out等于N-1(数组的标识从0开始),每经过一次循环就减1,向左移动一位,因此,此算法就不再处理已经排好序的数据了;内层for循环,计数器in从0开始,每完成一次内部循环就加1,当它等于out时结束一次循环;内层循环中,比较n和n+1位置上的对象,如果n位置上的大就交换;接下来看具体的java代码的实现:
public void BubbleSort(int [] a, int num){
int out,in;//循环的计数
int temp;//交换时用的临时变量;
for(out =num-1;out>1;out--){
for(in =0;in<out;in++){
if(a[in]>a[in=1]){
temp = a[in];
a[in] = a[in +1];
a[in+1]= temp;
}
}
}
}
不变性:在许多算法中,有些条件在算法执行时是不变的,称为不变性,认识到不变性对理解算法是有用的,这里的不变性是 out右边的所有数据都是排好序的;
效率:效率当然是比较低的,但是研究算法先从好理解的下手,优点就是比较好理解,算法也容易实现,缺点就是效率低,接着上边分析,大概平均下来需要N(N-1)/2次比较和N(N-1)/4次的交换,用大O表示法就是O(N²);
基本上完了;比较简单,从简单入手;洗洗睡觉;
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 树莓派学习笔记——实现modbus RTU从机
- linux网络编程十五:I/O复用的应用-非阻塞connect
- 单例 -- dispatch_once优化代码性能
- 监听某端口
- 汽车总线特性简述
- 排序---冒泡
- Go语言无法读取需要密码访问的PEM文件问题(failed to parse private key)
- 关于图的数据转为为邻接矩阵(第四次作业)
- hdu1009 FatMouse' Trade(贪心)
- MyBatis:Parameter Maps collection does not contain value for 的问题解决
- IO流
- 懒人服务器 - 教程一、运行示例程序
- NYOJ975 关于521
- 喷水装置(二)