两层嵌套循环,外层控制循环次数,内层循环进行比较

for(int x=0;x<arr.length-1;x++){
for(int y=0;y<arr.length;y++){
if(arr[y]>arr[y+1]){ }
}
}

此时的代码有问题,内层循环多比较了已经排好序的部分,都在最后面,需要去掉

        for(int x=0;x<arr.length-1;x++){
for(int y=0;y<arr.length-x;y++){
if(arr[y]>arr[y+1]){ }
}
}

此时的代码有问题,内层循环最后一个元素,无法和它后面的比较,应该去掉

        for(int x=0;x<arr.length-1;x++){
for(int y=0;y<arr.length-x-1;y++){
if(arr[y]>arr[y+1]){ }
}
}

判断完后,两个变量交换位置,利用第三方变量

        for(int x=0;x<arr.length-1;x++){
for(int y=0;y<arr.length-x-1;y++){
if(arr[y]>arr[y+1]){
int temp=arr[y];
arr[y]=arr[y+1];
arr[y+1]=temp;
}
}
}

java版:

public class ArrayDemo {

    /**
* @param args
*/
public static void main(String[] args) {
int[] arr=new int[]{2,5,4,1};
int[] newArr=bubbleSort(arr);
for(int x:newArr){
System.out.print(x);
}
} /**
* 冒泡排序(正序)
* @param arr
* @return
*/
public static int[] bubbleSort(int[] arr){
for(int x=0;x<arr.length-1;x++){
for(int y=0;y<arr.length-x-1;y++){
if(arr[y]>arr[y+1]){
int temp=arr[y];
arr[y]=arr[y+1];
arr[y+1]=temp;
}
}
}
return arr;
}
}

PHP版:

<?php
class ArrayDemo{
public static function main(){
$arr=array(2,5,4,1);
print_r(ArrayDemo::bubbleSort($arr));//输出 Array ( [0] => 1 [1] => 2 [2] => 4 [3] => 5 )
} /**
* 冒泡排序(正序)
* @param arr
* @return
*/
public static function bubbleSort($arr){
for($x=0;$x<count($arr)-1;$x++){
for($y=0;$y<count($arr)-$x-1;$y++){
if($arr[$y]>$arr[$y+1]){
$temp=$arr[$y];
$arr[$y]=$arr[$y+1];
$arr[$y+1]=$temp;
}
}
}
return $arr;
} } ArrayDemo::main();

选择排序和冒泡排序性能都很低,提高性能的方法,当需要换位置的时候,先不换,先把需要换位置的角标放到栈内存中,等最后一次性在堆内存中交换

排序中最快的是 希尔排序

[javaSE] 数组(排序-冒泡排序)的更多相关文章

  1. 011--c数组--排序--组成最大数

    数组--排序--组成最大数   组成最大数   任意输入一个自然数,输出该自然数的各位数字组成的最大数.例如,输入 1593 ,则输出为 9531 . 输入: 自然数 n 输出: 各位数字组成的最大数 ...

  2. Linux C++ 直接选择排序,冒泡排序,快速排序

    选择排序的思想是:每次从待排序中选择最小(大)的元素插入已经排好的序列中. /*直接选择排序*/ #include <iostream> using namespace std; void ...

  3. 060 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 07 冒泡排序

    060 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 07 冒泡排序 本文知识点:冒泡排序 冒泡排序 实际案例分析冒泡排序流程 第1轮比较: 第1轮比较的结果:把最 ...

  4. 【数组】—冒泡排序&&选择排序---【巷子】

    /* 什么是冒泡排序:从头到尾比较相邻的两个数的大小,如果符合条件则进行比较 [注]:从小到大进行排序 假设有一个数组 var arr = [9,8,7,6,5,4]; 我们想要进行这个数组进行排序那 ...

  5. Java ——数组 选择排序 冒泡排序

    本节重点思维导图 数组 public static void main(String[] args) { int a ; a=3; int[] b; b = new int[3];//强制开辟内存空间 ...

  6. [javaSE] 数组(排序-选择排序)

    两层嵌套循环,外层循环控制次数,内层循环进行比较 for(int x=0;x<arr.length;x++){ for(int y=0;y<arr.length;y++){ if(arr[ ...

  7. JAVA排序--[冒泡排序]

    package com.array; public class Sort_MaoPao { /** * 项目名称:冒泡排序 * 项目要求:用JAVA对数组进行排序,并运用冒泡排序算法 * 作者:Sev ...

  8. c#部分---一维数组、冒泡排序、foreach的用法

    一维数组:2016-10-14 定义方式:{定义的时候,需要数据类型.长度!} 1.int []aa=new int [5];  表示数组里面有5个字符: 2.int []aa=new int []{ ...

  9. Python学习笔记——基础篇【第五周】——算法(4*4的2维数组和冒泡排序)、时间复杂度

    目录 1.算法基础 2.冒泡排序 3.时间复杂度 (1)时间频度 (2)时间复杂度 4.指数时间 5.常数时间 6.对数时间 7.线性时间 1.算法基础  要求:生成一个4*4的2维数组并将其顺时针旋 ...

随机推荐

  1. easyui-layout系列之布局(1)

    1.Layout布局 通过 $.fn.layout.defaults 重写默认的 defaults. 布局(layout)是有五个区域(北区 north.南区 south.东区 east.西区 wes ...

  2. 网易云安全DDoS高防全新上线 ,游戏防护实力领先

    本文由  网易云发布.       10月24日,网易云安全(易盾)正式上线DDoS高防解决方案[点击查看].基于网易20年网络安全防护经验,网易云安全(易盾)DDoS高防可提供1T超大防护带宽,拥有 ...

  3. Day 2 Python 基础数据类型

    2.os.path.join()函数 语法:  os.path.join(path1[,path2[,......]]) 返回值:将多个路径组合后返回 注:第一个绝对路径之前的参数将被忽略 1 2 3 ...

  4. 纯文本-FileInputStream的编码与解码方式

    前言:以下分析只针对纯文本 1.FileInputStream默认的编码方式就是文件的编码方式 即:源文件是什么编码方式,则利用FileInputStream默认读取的字节数组,就是什么编码方式. 例 ...

  5. Python 将一个已知的 utc时间字符串 转换为东八区时间

    先获取一个utc格式的时间 utc_time = datetime.datetime.utcnow() print(utc_time) 输出 2018-06-24T08:59:39Z 这里我们假设目前 ...

  6. 关于Kafka部署优化的一点建议

    网络和IO线程配置优化 配置参数 num.network.threads:Broker处理消息的最大线程数 num.io.threads:Broker处理磁盘IO的线程数 优化建议 一般num.net ...

  7. [CSS3] 几种分割线实现方法

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. Sublime Text 3快捷键汇总

    转自:http://blog.sina.com.cn/s/blog_73c5cfbe0101ldj8.html Sublime Text 3非常实用,但是想要用好,一些快捷键不可或缺,所以转了这个快捷 ...

  9. 【NOI2013】快餐店 环套树+线段树

    题目大意:给你一颗环套树,你要在这棵的边上(包括端点)找一个点,使得离该点最远的点最近. 数据范围:$n≤10^5$,边权$≤10^9$. 此题不难看出一种暴力做法,我们依次断开环上的一条边,然后求整 ...

  10. rabbitmq系列四 之路由

    1.路由 在上一个的教程中,我们构建了一个简单的日志记录系统.我们能够向许多接收者广播日志消息. 在本次教程中,我们向该系统添加一些特性,比如,我只需要严重错误(erroe级别)的部分日志打印到磁盘文 ...