码迷,mamicode.com
首页 > 编程语言 > 详细

java之冒泡排序(Bubble sort)

时间:2015-07-13 10:01:26      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:

主要内容是摘自别人的,但是发现示例代码有错,故内容复制,代码修改。

原理:临近的数字两两进行比较,按照从小到大(从大到小)进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位;

   然后再从头开始进行两两比较交换,直到倒数第二位时结束(因为由第一遍排序得知已经把最大(小)数排到末尾了);

   接着再从头开始进行两两比较交换,直到倒数第三位时结束(因为由第一遍排序得知已经把最大(小)数排到末尾了,第二遍把第二大(小)的数排到倒数第二位了);

   循环直到排完序。

   例子为从小到大排序,

   原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 |

第一趟排序(外循环)

  第一次两两比较6 > 2交换(内循环)

   交换前状态| 6 | 2 | 4 | 1 | 5 | 9 |

   交换后状态| 2 | 6 | 4 | 1 | 5 | 9 |

  第二次两两比较,6 > 4交换

   交换前状态| 2 | 6 | 4 | 1 | 5 | 9 |

   交换后状态| 2 | 4 | 6 | 1 | 5 | 9 |

  第三次两两比较,6 > 1交换

   交换前状态| 2 | 4 | 6 | 1 | 5 | 9 |

   交换后状态| 2 | 4 | 1 | 6 | 5 | 9 |

  第四次两两比较,6 > 5交换

   交换前状态| 2 | 4 | 1 | 6 | 5 | 9 |

   交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

  第五次两两比较,6 < 9不交换

   交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |

   交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

第二趟排序(外循环)

  第一次两两比较2 < 4不交换

   交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |(已经知道最大)

   交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

  第二次两两比较,4 > 1交换

   交换前状态| 2 | 4 | 1 | 5 | 6 | 9 | 
   交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

   第三次两两比较,4 < 5不交换

   交换前状态| 2 | 1 | 4 | 5 | 6 | 9 | 
   交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

   第四次两两比较,5 < 6不交换

   交换前状态| 2 | 1 | 4 | 5 | 6 | 9 |

   交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

 第三趟排序(外循环)

  第一次两两比较2 > 1交换

   交换前状态| 2 | 1 | 4 | 5 | 6 | 9 |

   交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

  第二次两两比较,2 < 4不交换

   交换前状态| 1 | 2 | 4 | 5 | 6 | 9 | 
   交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

  第三次两两比较,4 < 5不交换

   交换前状态| 1 | 2 | 4 | 5 | 6 | 9 | 
   交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

第四趟排序(外循环)无交换

   第一次两两比较1<2不交换   

   交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

   第一次两两比较2<4不交换   

   交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

第五趟排序(外循环)无交换

  第一次两两比较1<2不交换   

   交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

原:| 1 | 2 | 4 | 5 | 6 | 9 |

一:| 1 | 2 | 4 | 5 | 6 | 9 |

二:| 1 | 2 | 4 | 5 | 6 | 9 |

三:| 1 | 2 | 4 | 5 | 6 | 9 |

四:| 1 | 2 | 4 | 5 | 6 | 9 |

五:| 1 | 2 | 4 | 5 | 6 | 9 |

排序完毕,输出最终结果1 2 4 5 6 9

 1 /*
 2 By starainDou
 3 */
 4 public class Hello {
 5     public static void main(String args[]){
 6         int []num = {6,2,4,1,5,9};
 7         for(int i = 0;i<num.length - 1;i++){
 8             for(int j = 0; j<num.length-1-i;j++){
 9                     if(num[j]>num[j+1]){
10                         int temp = num[j];
11                         num[j] = num[j+1];
12                         num[j+1] = temp;
13                     }
14             }
15         }
16     for(int n = 0; n < num.length; n ++){
17         System.out.print(num[n]+"\t");
18         }
19     }
20 }

在此感谢原作者

java之冒泡排序(Bubble sort)

标签:

原文地址:http://www.cnblogs.com/starainDou/p/4642042.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!