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)

图解:

原文地址:https://www.cnblogs.com/xiayahui/p/4551016.html