java数组排序之冒泡排序
上一篇文章说了,选择排序。
选择排序的原理就是,先确定第一个格子当中的数字是最小的,之后确定第二个格子是其他数字中最小的依次类推。
这一节当中我们来看下冒泡排序:
思路:
1、首先拿第一个数字跟第二个比,如果第二个数字大于第一个数字,那么保持各自位置,否则交换位置,让数字更小的那一个在前面,数字较大的在后面。第一个跟第二个比较完之后,紧接着第二个跟第三个进行比较,比较的原则也是根据第一次比较的原则,这样比较下去一直到数组的结尾,我们得到的是这个数组中的最大值,并且这个最大值在数组的结尾处。也就是说最末尾的值我们现在已经确定了,我们接下来确定的就是次末尾的值。然后再想之前那样循环遍历比较,只是此时的长度减一。

代码:
class SelectSort
{ public static void main(String[] args)
{ int[] arr = {12,87,34,39,134,4,45,8,21233,99}; printArr(arr); //selectSort(arr);
maopaoSort(arr); printArr(arr); } public static void selectSort(int[] arr){ for(int i = 0; i<arr.length-1; i++)
{ for(int a = i + 1; a<=arr.length-1 ; a++)
{
/**
* if(arr[i]>arr[a])
* {
* int temp = arr[i];
* arr[i] = arr[a];
* arr[a] = temp;
* }
*/
if(arr[i]>arr[a])
swap(arr,i,a); } } } public static void maopaoSort(int[] arr){ for(int n = 0 ; n<arr.length-1 ; n++)
{ for(int i = 0 ; i < arr.length-1-n ; i++)
{ if(arr[i]>arr[i+1])
swap(arr,i,i+1); } } } public static void printArr(int[] arr)
{
System.out.print("[");
for(int i=0 ; i<arr.length ; i++){ System.out.print(arr[i]);
if(i<arr.length-1)
System.out.print(","); }
System.out.print("]");
System.out.println(); } public static void swap(int[]arr,int x, int y)
{ int temp;
if(arr[x]>arr[y])
{ temp = arr[x];
arr[x] = arr[y];
arr[y] = temp; } } }
java数组排序之冒泡排序的更多相关文章
- JAVA算法系列 冒泡排序
java算法系列之排序 手写冒泡 冒泡算是最基础的一个排序算法,简单的可以理解为,每一趟都拿i与i+1进行比较,两个for循环,时间复杂度为 O(n^2),同时本例与选择排序进行了比较,选择排序又叫直 ...
- Java数组排序
Java数组排序Arrays.sort,以及Comparator接口的用法 有的时候需要对数组里的element进行排序.当然可以自己编写合适的排序方法,但既然java包里有自带的Arrays.sor ...
- java算法之冒泡排序法
由此可见:N个数字要排序完成,总共进行N-1趟排序,每第 i 趟的排序次数为 (N-i) 次,所以 可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数,即 for(inti=0;i& ...
- Java中的冒泡排序
Java中的冒泡排序排序的第一种思想:将第一个值与后面的值相比较,如果第一个值比其他值小,那么将较大的值与第一个换位置,然后继续比较直至所有的数比较完成.这样就可以保证第一个数是最大数.然后将第二个数 ...
- Java 排序算法-冒泡排序及其优化
Java 排序算法-冒泡排序及其优化 什么是冒泡排序 基本写法 优化后写法 终极版本 源码及测试 什么是冒泡排序 这里引用一下百度百科上的定义: 冒泡排序(Bubble Sort),是一种计算机科学领 ...
- JAVA冒泡排序/JAVA冒泡排序再找出给定数据中的最大值最小值/JAVA数组排序
//数组中排序 int in[] = {1,6,5,8,9}; Arrays.sort(in); for(int i=0;i<in.length;i++){ Sys ...
- [Java]数组排序-选择排序 冒泡排序 插入排序
1 选择排序 原理:a 将数组中的每个元素,与第一个元素比较 如果这个元素小于第一个元素, 就将这个 两个元素交换. b 每轮使用a的规则, 可以选择出 ...
- java数组排序(插入排序、冒泡排序、选择排序)与递归 代码示例
import java.util.Scanner; public class OrderBy { public static void main(String[] args) { // Scanner ...
- Java基础(45):冒泡排序的Java封装(完整可运行)
1.冒泡排序 package lsg.ap.bubble; import java.util.*; public class BubbleSort { public static void bubbl ...
随机推荐
- [转] 函数编程之闭包漫谈(Closure)
在函数编程中经常用到闭包.闭包是什么,它是怎么产生的及用来解决什么问题呢.给出字面的定义 先:闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境).这个从字面上很难理解,特别对于一 ...
- AndroidStudyDemo之Android4.x介绍
Android4.x 思维导图 作者:李旺成 时间:2016年4月7日 AndroidStudyDemo 系列篇章开始了!!! AndroidStudyDemo 你值得拥有AndroidStudyDe ...
- 使用附加导航(affix)实现内容切换
<!DOCTYPE html> <html> <head> <title> new document </title> <meta c ...
- HDU 5592 ZYB's Premutation(树状数组+二分)
题意:给一个排列的每个前缀区间的逆序对数,让还原 原序列. 思路:考虑逆序对的意思,对于k = f[i] - f[i -1],就表示在第i个位置前面有k个比当前位置大的数,那么也就是:除了i后面的数字 ...
- Bootstrap V3使用Tab标签
Bootstrap V3使用Tab标签 >>>>>>>>>>>>>>>>>>>> ...
- hibernate中使用HQL进行数据库查询
1.写的规则比较简单,我讲一下,如图Station这个不是数据库中的表,而是entity包中的类名Station,可以省略 select * 2.返回的类型自动转化为String类型,不用你自己再转化 ...
- ASP.net MVC 多语言处理
MVC多语言处理主要分两部分,一部分是Razor视图中的文字标签内容切换, 另一部分是javascript文件中的文标签内容切换. 这里分这两部分来说. View视图中的比较好做, 思路是使用资源文 ...
- mysql - 初探
1,查询所有数据库名称: show databases; 2,查询所有表: use database_name; show tables; 3,查询表中的所有字段: desc table_name;
- [转]Windows中的命令行提示符里的Start命令执行路径包含空格时的问题
转自:http://www.x2009.net/articles/windows-command-line-prompt-start-path-space.html 当使用Windows 中的命令行提 ...
- java基础易错点总结(一)
子类继承父类表示子类比他的父类包含更多的信息和方法 子类调用重载的构造方法时会调用父类的构造方法,super();一般如果不写的话会隐式的调用,而且每次调用都在所有语句之前. 在函数中,使用父类的地方 ...