java算法之冒泡排序法

N个数字要排序完成,总共进行N-1趟排序,每第 i 趟的排序次数为 (N-i) 次,所以

可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数,即

  for(inti=0;i<arr.length-1;i++){

        for(intj=0;j<arr.length-1-i;j++){

        }

}

冒泡排序法 口诀:
     外层循环 0到n-1      //控制比较轮数   n 表示元素的个数
     内层循环 0到n-i-1     //控制每一轮比较次数
     两两比较做交换

 

冒泡排序的优点:每进行一趟排序,就会少比较一次,因为每进行一趟排序都会找出一个较大值。

如上例:第一趟比较之后,排在最后的一个数一定是最大的一个数,第二趟排序的时候,只需要

比较除了最后一个数以外的其他的数,同样也能找出一个最大的数排在参与第二趟比较的数后面,

第三趟比较的时候,只需要比较除了最后两个数以外的其他的数,以此类推……也就是说,

没进行一趟比较,每一趟少比较一次,一定程度上减少了算法的量。

 1 import java.util.Scanner;
 2
 3 //冒泡排序法 口诀:
 4   /*  外层循环 0到n-1    //控制比较轮数   n 表示元素的个数
 5    *  内层循环 0到n-i-1  //控制每一轮比较次数
 6             两两比较做交换
 7 */
 8 public class Demo03 {
 9
10     public static void main(String[] args) {
11
12        Scanner input = new Scanner(System.in);
13        int NUM = 5;
14        int []a = new int[NUM];
15        System.out.println("请输入数字:");
16
17        for(int i=0;i<a.length;i++){
18            a[i] = input.nextInt();
19        }
20
21        System.out.println("排序之前:");
22        for (int i : a) {
23             System.out.print(i+"\t");
24         }
25
26        //冒泡排序实现
27        for(int i=0;i<a.length-1;i++){
28            for(int j=0;j<a.length-i-1;j++){
29                if(a[j]>a[j+1]){
30                    int temp = a[j];
31                    a[j] = a[j+1];
32                    a[j+1] = temp;
33                }
34            }
35        }
36
37        System.out.println("\n排序之后:");
38        for (int i : a) {
39             System.out.print(i+"\t");
40         }
41
42     }
43
44 }

原文地址:https://www.cnblogs.com/yachao1120/p/10125225.html

时间: 2024-10-10 14:28:09

java算法之冒泡排序法的相关文章

算法 之 冒泡排序法

不会算法的php程序员不是好程序员~ 冒泡排序法:有n个数,第一次排序将最小的(或者最大的)排到最右边,通过由最左开始到最右边的数两两比较.同理,第二次将n-1个数的最小的(或者最大的)排到倒数第二个位置.以此类推. 关键点:相邻两个数的两两比较 时间复杂度:O(n^2) 上代码: $a = array(3,8,1,5,7,2,6,4); for($j = count($a) ; $j > 1 ; $j--){ for($i = 0 ; $i < $j-1 ; $i++){ if($a[$i]

【算法】冒泡排序法

/// <summary> /// 冒泡法排序 /// </summary> /// <param name="shuzu"></param> private static void MySort(int[] shuzu) { //比较多少轮 for (int i = 0; i < shuzu.Length - 1; i++) { //每一轮比较多少次 for(int j=shuzu.Length-1;j>i;j--) { i

【Java算法】冒泡排序

package suanfa; public class Maopao { public static void main(String[] args) { // TODO Auto-generated method stub int[] a = { 3, 2, 1 }; int temp; int n = a.length; // 共比较n-1 大轮 for (int i = 0; i < n - 1; i++) { // 第一轮比较n-1次 // 第二轮比较n-2次 for (int j =

java基础算法之冒泡排序

接触冒泡算法还是大一了,学习C语言的冒泡算法.现在唯一记得就是冒泡与选择了.出来刚刚工作的时候觉的算法基本没撒用处,现在发现这些都是很好的基础.因此自己也准备重新拾起这些知识. 冒泡排序 泡排序是一种很简单的排序的算法,根据名字就可以知道这一个过程,一点点的把大的数移到顶部. 时间复杂度 若文件的初始状态是正序的,一趟扫描即可完成排序.所需的关键字比较次数 和记录移动次数 均达到最小值:  ,  .所以,冒泡排序最好的时间复杂度为 . 若初始文件是反序的,需要进行 趟排序.每趟排序要进行 次关键

算法大神之路----排序(冒泡排序法)

冒泡排序法 冒泡排序法又称为交换排序法,是由观察水中冒泡变化构思而成,气泡随着水深压力而改变.气泡在水底时,水压最大,气泡最小,而气泡慢慢浮上水面时,气泡所受压力最小,体积慢慢变大. 冒泡排序比较方式是从第一个元素开始,比较相邻的元素大小,如果大小顺序有误,则对调后进行下一个元素比较.直到所有元素满足关系为止. 冒泡排序法分析 冒泡排序法平均情况下,需要比较(n-1)/2次,时间复杂度为O(n2),最好的情况只需要扫描一次,不用操作,即作n-1次比较,时间复杂度为O(n). 由于冒泡排序为相邻两

Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法

Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配排序(基数排序) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 不稳定:快速排序,希尔排序,堆排序. 先来看看 8种排序之间的关系: 1.直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2]

Java冒泡排序法

我写的大部分博客,基本上都是留作日后回忆知识点所用,当然,如果我的文章能帮到道友们!我会更加的开心,与荣幸!如果有错误之处,请海涵,并指出问题所在,看见后我必加以修改,感谢!共勉.一起进步! 之前看过的一篇博客之中,总结了排序的效率的问题,基本上(不说死) 冒泡<选择<插入<快速(快速排序法的效率最高) 冒泡排序法: 概念: 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法.它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小.首字母

Java冒泡排序法实现

“冒泡排序法”可以将一个无序的数组按照从小到大的顺序或者是从大到小的顺序进行排序,是一种较为常见的排序算法,因为数据从小到大或者从大到小地到数列头或者数列末的过程称为“冒泡”.对于冒泡排序我觉得最重要的两点就是:(1)需要重新排序的次数,即循环的次数,这个是根据数组的序列的大小来定的,比如数组的大小为n的话,需要循环的次数就为(n - 1)次:(2)另外一个就是每次循环需要进行数据之间比较的次数,每次排序后可以确定出最大或者最小的那个数据,下次循环时就不用再进行比较了,所以每次进行比较的次数是(

排序算法之冒泡排序Java实现

排序算法之冒泡排序 一.初级的冒泡排序 import java.util.Arrays; /** * * @title BubbleSort * @describe 冒泡排序 * @author 张富昌 * @date 2016年10月1日下午3:56:30 */public class BubbleSortLow { // 起泡排序是快速排序的基础,但是排序速度较慢. // 基本思想:将序列中第 1 个元素与第 2 个元素进行比较,如前者大于后者,则两个元素交换位置,否则不交换: // 再将第