博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【数据结构与算法】------冒泡排序
阅读量:4186 次
发布时间:2019-05-26

本文共 1494 字,大约阅读时间需要 4 分钟。

 学习开发一年的时间里,很少去了解排序算法,冒泡排序也是最开始学习的样子,靠死记硬背,没有引入自己的理解。

 对于什么时间复杂度和空间复杂度和稳定性也不清楚其原委,或许在代码方面少了几许的天分:

冒泡排序:

冒泡排序每一轮的比较都是前面的数和后面的数进行比较,并交换位置,每一轮结束,最大值就位于序列末尾。

下面代码是最初的冒泡排序代码:

public class bubbleSort {      public static void sort(int[] arr) {    	   for(int i=0;i
arr[j+1]) { int num = arr[j]; arr[j]=arr[j+1]; arr[j+1]=num; } } } } public static void main(String[] args) { int[] arr = {20,40,30,10,60,50}; sort(arr); for(int i=0;i

  因为冒泡排序,是前后两个数进行比较,即使一个序列后半部分是一个有序的序列,冒泡排序还是挨个进行比较这样就比较浪费时间。 通过添加一个标识符,如果有一轮比较,标识符没有改变,就结束循环。

代码如下:

public class bubbleSort {    public static void main(String[] args) {        int[] arr = {49,38,65,97,76,27,49};        bubbleSort(arr);        for(int i = 0;i < arr.length;i++){            System.out.println(arr[i]);        }    }       public static void bubbleSort(int[] arr){        boolean flag;//            for(int i = arr.length-1; i > 0; i--){                flag = false;                 for(int j = 0; j < i; j++){                    if(arr[j] > arr[j+1]){                        swap(arr,j,j+1);                        flag = true;                    }                }                if(!flag){                    return;                }            }       }       public static void swap(int[] arr,int m,int n){           int num = arr[m];           arr[m] = arr[n];           arr[n] = num;       }}

    冒泡排序是稳定的,因为当a = b时,只有大于才进行位置的交换,故 a 和 b 的位置没有计划进行交换,所以算法稳定。

转载地址:http://pcfoi.baihongyu.com/

你可能感兴趣的文章
UDP丢包及无序的现象
查看>>
java的反射
查看>>
java的Calendar类
查看>>
列式数据库
查看>>
jsp中post方式请求乱码
查看>>
Java截图
查看>>
Collections的随机排序
查看>>
Java遍历Map的四种方法及对比
查看>>
libsvm的经典总结(全面至极)
查看>>
身份证合法性校验
查看>>
System.getProperties(); //系统属性
查看>>
java读取clob字段的方法
查看>>
java的实现图片合并
查看>>
GP数据库参数配置
查看>>
GP数据库参数配置
查看>>
MySQL实现了四种通信协议
查看>>
Lucene基本API组件
查看>>
什么是AI,叫人工智能,和BI,商业智能有什么区别
查看>>
根域名服务器
查看>>
Java基础 字符、字符串
查看>>