排序(1)-冒泡排序
来源:互联网 发布:个人官网源码 编辑:程序博客网 时间:2024/05/18 00:05
1.基本概念
根据在排序过程中待排序的记录是否全部被放置在内存中,将排序分为内部排序和外部排序。内部排序是在排序整个过程中,待排序的所有记录全部 放置在内存中;外排序是由于排序的记录个数太多,不能同时放置在内存中,整个排序过程需要 在内外存之间多次交换数据才能进行。
2.八大排序
下面讲述的八大排序,都是属于内部排序。具体如下图
3.冒泡排序
首先来讲讲冒泡排序(Bubble Sort),这是思路最简单的排序方式。他的基本思想是:重复地走访要排序的数列,一次比较2相邻的元素,如果它们的顺序错误就把它们交换过来,直到没有再需要交换的,这样越大的元素经由交换会慢慢“浮出”。(这里的排序一般都是从小到大的进行排序)
初: 49 38 65 97 76 13 27 49
1st: 38 49 65 76 13 27 49 97
2nd: 38 49 65 13 27 49 76 97
3rd: 38 49 13 27 49 65 76 97
4th: 38 13 27 49 49 65 76 97
5th: 13 27 38 49 49 65 76 97
每走访一次数列,都会有一个相对最大的元素浮出。
4.时间复杂度
(1)最好的情况,即待排序的数列初状态为正序,则一起泡就可以完成排序,则进行了n-1次比较,没有数据交换,时间复杂度为O(n)
(2)最坏的情况,即待排序的数列初状态为逆序,此时需要比较n(n-1)/2次,并做等数量的数据交换,因此总的之间复杂度为O(n^2)。
冒泡排序是一种稳定的排序方法。
5.java代码的实现
public class bubble {public static void main(String[] args) {// TODO Auto-generated method stubint [] a = {57,68,59,52,72,28,96,33,24,19};//int []a = {57,68,59,52};System.out.println("冒泡排序的结果是: ");bubbleSort(a);printscreen(a);} private static void printscreen(int[] number) { // TODO Auto-generated method stub int size = number.length; for (int i = 0 ; i < size;i++) System.out.print(number[i]+ " "); System.out.println();}//冒泡排序/** * * @author Administrator *冒泡排序 *比较相邻的元素,如果第一个比第二个大,就交换他们两个 *对每一对相邻的元素做相同的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的 *针对素有的元素重复以上步骤,除了最后一个 *持续每次对越来越少的元素重复上面的操作,直到没有一个数字需要比较 */public static void bubbleSort(int [] number){ //nuberm.lengthnuberm.length放在外面,较少调用函数的次数,提高效率?int size = number.length;for(int i = 0;i < size -1;i++ )//每次比较最大的到了最后,下一次不用再参与比较{for(int j = 0;j < size - 1 - i;j++)//下面有j+1,所以上限要-1{if (number[j] > number[j+1]){int n = number[j];number[j] = number[j+1];number[j+1] = n;}}}}}
- 排序(1)冒泡排序
- 排序(1)-冒泡排序
- 排序(1)冒泡排序
- 冒泡排序(1)
- 排序1 冒泡排序
- 排序(1) -- 冒泡排序
- 排序1-冒泡排序
- 排序1-冒泡排序
- 排序1:冒泡排序
- 排序-1-冒泡排序
- 经典排序算法1(冒泡排序)
- C++排序之冒泡排序(1)
- 交换排序(1)---冒泡排序
- 冒泡排序(1)BubbleSort
- 1、冒泡排序(0111)
- [排序算法1] - 冒泡排序
- 排序算法(1)-冒泡排序
- 排序算法1-冒泡排序
- 建立链算法库
- 网络编程(概念)自己理解
- 适用memcached的业务场景
- SQLServer学习笔记 --- sql server2008的数据类型
- 解决asp.net 4.0尚未在web服务器上注册
- 排序(1)-冒泡排序
- 人脸识别技术大总结——Face Detection & Alignment
- Github上Stars最多的53个深度学习项目,TensorFlow遥遥领先
- 在安卓开发环境下写一个main测试类运行报错ShouldNotReachHere
- 二维码的介绍
- 第五讲作业,输入长方形的边长,输出发现面积与周长
- [转]如何打开pr_debug调试信息
- 第一个坑的我崩溃的题目:福尔摩斯的约会
- Ubuntu 14.04安装Matlab2012a过程