[javaSE] 数组(排序-冒泡排序)
两层嵌套循环,外层控制循环次数,内层循环进行比较
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] 数组(排序-冒泡排序)的更多相关文章
- 011--c数组--排序--组成最大数
数组--排序--组成最大数 组成最大数 任意输入一个自然数,输出该自然数的各位数字组成的最大数.例如,输入 1593 ,则输出为 9531 . 输入: 自然数 n 输出: 各位数字组成的最大数 ...
- Linux C++ 直接选择排序,冒泡排序,快速排序
选择排序的思想是:每次从待排序中选择最小(大)的元素插入已经排好的序列中. /*直接选择排序*/ #include <iostream> using namespace std; void ...
- 060 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 07 冒泡排序
060 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 07 冒泡排序 本文知识点:冒泡排序 冒泡排序 实际案例分析冒泡排序流程 第1轮比较: 第1轮比较的结果:把最 ...
- 【数组】—冒泡排序&&选择排序---【巷子】
/* 什么是冒泡排序:从头到尾比较相邻的两个数的大小,如果符合条件则进行比较 [注]:从小到大进行排序 假设有一个数组 var arr = [9,8,7,6,5,4]; 我们想要进行这个数组进行排序那 ...
- Java ——数组 选择排序 冒泡排序
本节重点思维导图 数组 public static void main(String[] args) { int a ; a=3; int[] b; b = new int[3];//强制开辟内存空间 ...
- [javaSE] 数组(排序-选择排序)
两层嵌套循环,外层循环控制次数,内层循环进行比较 for(int x=0;x<arr.length;x++){ for(int y=0;y<arr.length;y++){ if(arr[ ...
- JAVA排序--[冒泡排序]
package com.array; public class Sort_MaoPao { /** * 项目名称:冒泡排序 * 项目要求:用JAVA对数组进行排序,并运用冒泡排序算法 * 作者:Sev ...
- c#部分---一维数组、冒泡排序、foreach的用法
一维数组:2016-10-14 定义方式:{定义的时候,需要数据类型.长度!} 1.int []aa=new int [5]; 表示数组里面有5个字符: 2.int []aa=new int []{ ...
- Python学习笔记——基础篇【第五周】——算法(4*4的2维数组和冒泡排序)、时间复杂度
目录 1.算法基础 2.冒泡排序 3.时间复杂度 (1)时间频度 (2)时间复杂度 4.指数时间 5.常数时间 6.对数时间 7.线性时间 1.算法基础 要求:生成一个4*4的2维数组并将其顺时针旋 ...
随机推荐
- WP8里dll类库(SDK)实现多语言多主题
近日在做一个sdk项目,因为要实现多语言切换,单独类库多语言这方面的实现不是很多,故整理如下. 1.添加AppResource.resx(英文)和AppResource-zh-CN.resx 假设我们 ...
- 利用MVC5+EF6搭建博客系统
https://www.cnblogs.com/wyt007/p/7880137.html
- With语句上下文管理
在平时工作中总会有这样的任务,它们需要开始前做准备,然后做任务,然后收尾清理....比如读取文件,需要先打开,读取,关闭 这个时候就可以使用with简化代码,很方便 1.没有用with语句 1 2 3 ...
- fastAdmin根据状态显示是否显示操作按钮
根据状态决定是否显示某个操作按钮 代码如下:
- postgresql子查询优化(提升子查询)
问题背景 在开发项目过程中,客户要求使用gbase8s数据库(基于informix),简单的分页页面响应很慢.排查发现分页sql是先查询出数据在外面套一层后再取多少条,如果去掉嵌套的一层,直接获取则很 ...
- 使用git时出现Please make sure you have the correct access rights and the repository exists.问题已解决。
使用git时,出现Please make sure you have the correct access rights and the repository exists.问题已解决. 今天我在使用 ...
- c++类定义和类实现
预备知识: c++中我们cpp文件和.h文件的区别是,cpp文件是需要编译的文件,成为一个独立的编译单元,而h文件从来是不需要编译,只是用于预处理. 通常我们在cpp文件中,完成函数的实现,然后在h中 ...
- 【xsy1131】tortue FFT
题目大意: 一次游戏要按N个按键.每个按键阿米巴有P[i]的概率按错.对于一串x个连续按对的按键,阿米巴可以得分 $f(x)=tan(\dfrac{x}{N})\times e^{arcsin(0.8 ...
- J07-Java IO流总结七 《 InputStreamReader和OutputStreamWriter 》
前面在介绍FileReader和FileWriter的时候有说到,FileReader的读取字符功能,以及FileWriter的写出字符的功能,都不是它们自己实现的,而是,它们分别继承了InputSt ...
- 隐型马尔科夫模型(HMM) 简介
先介绍一下马尔科夫模型: 马尔可夫模型(Markov Model)是一种统计模型,广泛应用在语音识别,词性自动标注,音字转换,概率文法等各个自然语言处理等应用领域.经过长期发展,尤其是在语音识别中的成 ...