博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
排序1:冒泡排序
阅读量:3731 次
发布时间:2019-05-22

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

题目:对于一个int数组,请编写一个冒泡排序算法,对数组元素排序。

给定一个int数组A及数组的大小n,请返回排序后的数组。

测试样例:[1,2,3,5,2,3],6    输出:[1,2,2,3,3,5]

思路:冒泡排序原理很简单:遍历n次,每次遍历找出一个最大的元素放到数组的最后面,第一次遍历从0开始对相邻两个元素进行比较,将较大的元素进行交换是指位于后面的位置,即总是比较a[i]与a[i+1]两个元素,i从0开始到length-2;完成第一次排序后找出了最大的元素并将其放到了末尾;然后再次遍历i从0开始到length-3,每次比较相邻两个元素大小,将大的交换到后面,完成第二次排序后找出了倒数第二大的元素并将其放到了倒数第二个位置,依次类推,程序是一个2重循环,外层循环范围是每一次未排序的范围,从i=length-1开始到i=1;内层循环从j=0开始到j=i-1;时间复杂度O(n^2),空间复杂度O(1),稳定

每次循环将当前数组中的最大值移动到数组末尾的有序位置,于是每次循环之后需要排序的数组范围就会缩小一个元素。于是外层循环代表当前需要进行排列的数组范围需要不断缩小。写代码时注意边界值的界定,可以通过具体化来帮助确定。

import java.util.*;//冒泡排序:每次遍历将最大的元素相邻交换到数组的最后面,需要排序的数组范围逐渐减小public class BubbleSort {    public int[] bubbleSort(int[] A, int n) {        //特殊输入        if(A==null||A.length<=0) return A;        int temp=0;        //双重遍历,外层遍历表示需要排序的数组范围,从i=A.length-1逐渐减小到i=0        for(int i=A.length-1;i>=0;i--){            for(int j=0;j<=i-1;j++){                if(A[j]>A[j+1]){                    //交换相邻的两个元素A[j]与A[j+1],将大的向后移动                    temp=A[j+1];                    A[j+1]=A[j];                    A[j]=temp;                }            }        }        return A;    }}

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

你可能感兴趣的文章
Pycharm 的 no python interpreter configured for the project错误
查看>>
数据结构——二叉排序树(Java代码实现)
查看>>
数据结构——平衡二叉树(Java代码实现)
查看>>
数据结构——多叉树、B树
查看>>
Spring MVC 的JSON 数据交互 和RESTful支持
查看>>
Shiro 和 Spring 的授权管理详解
查看>>
SVN的安装及其基本操作
查看>>
python 250行代码开发一个贪吃蛇(较为完整)
查看>>
响应式WEB设计 BootStrap入门及自适应
查看>>
Zookeeper启动报错 Starting zookeeper ... already running as process 5688.
查看>>
CenterOs7 安装MySQL数据库
查看>>
CenterOS的Hive环境的搭建日志及可能出现的问题和解决方法
查看>>
NodeJs使用npm安装第三方模块与moment模块进行时间格式化
查看>>
NodeJs 服务端渲染 art-template 与 CommonJS 的模块规范
查看>>
Hive 数据库操作(HQL语法详解)
查看>>
Java8 详解
查看>>
Postman 接口测试
查看>>
VueCli 脚手架详解(从安装到实际运用)
查看>>
ElementUI项目的搭建和简介
查看>>
ElementUI+springboot 项目实战前后端分离(用户管理系统的开发)
查看>>