标签:
主要内容是摘自别人的,但是发现示例代码有错,故内容复制,代码修改。
原理:临近的数字两两进行比较,按照从小到大(从大到小)进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位;
然后再从头开始进行两两比较交换,直到倒数第二位时结束(因为由第一遍排序得知已经把最大(小)数排到末尾了);
接着再从头开始进行两两比较交换,直到倒数第三位时结束(因为由第一遍排序得知已经把最大(小)数排到末尾了,第二遍把第二大(小)的数排到倒数第二位了);
循环直到排完序。
例子为从小到大排序,
原始待排序数组| 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 }
在此感谢原作者
标签:
原文地址:http://www.cnblogs.com/starainDou/p/4642042.html