zoukankan      html  css  js  c++  java
  • JAVA实现冒泡排序

    闲来无事,自己想起上家公司的笔试题就会考冒泡排序,so,自己就试试写了下,分享下了。

    实现:

     1 package myTempTest;
     2 
     3 public class maopao {
     4 
     5     public static void main(String[] args) {
     6         
     7         //定义一个无序的数字型数字
     8         int[] numList = {5,4,3,2,1,10,9,8,7,6,21,32,1,322,12321,33,2111,22,22,123,2131};
     9 
    10         //最外面的循环用于从数组的第一值依次和后面的值做比较,一直循环到数组的最后一个数字
    11         for (int i = 0 ; i < numList.length ; i ++)
    12         {
    13             System.out.print("第"+i+"次循环:");//换行
    14             //内循环 用于判断数组的第 i 个位置的数字 和 起后面的第j个数字的大小比较和位置交换用的。
    15             for(int j = numList.length-1 ; j > i ; j -- )
    16             {
    17                 if(numList[j]<numList[i])
    18                 {
    19                     int temp = numList[i];
    20                     numList[i] = numList[j];
    21                     numList[j] = temp;
    22                     
    23                 }
    24             }
    25             for(int k = 0 ; k < numList.length ; k ++)
    26             {
    27                 System.out.print(numList[k] +  " ");//输出本次循环之后的排序
    28             }
    29             System.out.println();
    30         }
    31     }
    32 
    33 }

    输出结果:

     1 第0次循环:1 4 3 2 1 10 9 8 7 6 21 32 5 322 12321 33 2111 22 22 123 2131 
     2 第1次循环:1 1 3 2 4 10 9 8 7 6 21 32 5 322 12321 33 2111 22 22 123 2131 
     3 第2次循环:1 1 2 3 4 10 9 8 7 6 21 32 5 322 12321 33 2111 22 22 123 2131 
     4 第3次循环:1 1 2 3 4 10 9 8 7 6 21 32 5 322 12321 33 2111 22 22 123 2131 
     5 第4次循环:1 1 2 3 4 10 9 8 7 6 21 32 5 322 12321 33 2111 22 22 123 2131 
     6 第5次循环:1 1 2 3 4 5 9 8 7 6 21 32 10 322 12321 33 2111 22 22 123 2131 
     7 第6次循环:1 1 2 3 4 5 6 8 7 9 21 32 10 322 12321 33 2111 22 22 123 2131 
     8 第7次循环:1 1 2 3 4 5 6 7 8 9 21 32 10 322 12321 33 2111 22 22 123 2131 
     9 第8次循环:1 1 2 3 4 5 6 7 8 9 21 32 10 322 12321 33 2111 22 22 123 2131 
    10 第9次循环:1 1 2 3 4 5 6 7 8 9 21 32 10 322 12321 33 2111 22 22 123 2131 
    11 第10次循环:1 1 2 3 4 5 6 7 8 9 10 32 21 322 12321 33 2111 22 22 123 2131 
    12 第11次循环:1 1 2 3 4 5 6 7 8 9 10 21 22 322 12321 33 2111 22 32 123 2131 
    13 第12次循环:1 1 2 3 4 5 6 7 8 9 10 21 22 322 12321 33 2111 22 32 123 2131 
    14 第13次循环:1 1 2 3 4 5 6 7 8 9 10 21 22 22 12321 33 2111 32 123 322 2131 
    15 第14次循环:1 1 2 3 4 5 6 7 8 9 10 21 22 22 32 33 2111 123 322 2131 12321 
    16 第15次循环:1 1 2 3 4 5 6 7 8 9 10 21 22 22 32 33 2111 123 322 2131 12321 
    17 第16次循环:1 1 2 3 4 5 6 7 8 9 10 21 22 22 32 33 123 322 2111 2131 12321 
    18 第17次循环:1 1 2 3 4 5 6 7 8 9 10 21 22 22 32 33 123 322 2111 2131 12321 
    19 第18次循环:1 1 2 3 4 5 6 7 8 9 10 21 22 22 32 33 123 322 2111 2131 12321 
    20 第19次循环:1 1 2 3 4 5 6 7 8 9 10 21 22 22 32 33 123 322 2111 2131 12321 
    21 第20次循环:1 1 2 3 4 5 6 7 8 9 10 21 22 22 32 33 123 322 2111 2131 12321 

    原理:

        冒泡排序原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子。

         或者可以这样描述冒泡排序:就是将第一个记录的关键字和第二个记录的关键字进行比较, 如果后面的比前面的小则交换,然后比较第二个和第三个,依次类推。比完一趟,最大的那个已经放到了最后的位置,这样就可以对前面N-1个数再循环比较。  

      稳定,时间复杂度 O(n^2)

    图解:

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 交换Easy
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法训练 矩阵乘方
    QT中给各控件增加背景图片(可缩放可旋转)的几种方法
    回调函数实现类似QT中信号机制
    std::string的Copy-on-Write:不如想象中美好(VC不使用这种方式,而使用对小字符串更友好的SSO实现)
  • 原文地址:https://www.cnblogs.com/xiayahui/p/4551016.html
Copyright © 2011-2022 走看看