【冒泡排序算法研究】

现有如下六人,身高如下:

//张三(161) 、李四(168) 、 王二麻子(155) 、 赵六(180)  、孙七(144)  、司马相如(200)

//现要求把这六个人身高排序(从高到矮降序,或者从矮到高升序)

//冒泡排序核心思想:

先揪出第一个人张三 让他跟其余的人比较,得出司马相如最高,交换张三、司马位置

//司马相如(200) 李四(168)  王二麻子(155)  赵六(180)  孙七(144)   张三(161)

//第二趟排序,剔除司马,从其余人中选择最高的,结果交换;李四和赵六位置

//司马相如(200)  赵六(180)  王二麻子(155)  李四(168)  孙七(144)   张三(161)

//第三趟排序,剔除司马、赵六,从其余人中选择最高的,结果交换;王二麻子和李四位置

//司马相如(200)  赵六(180)  李四(168)   王二麻子(155)  孙七(144)  张三(161) 

//第三趟排序,剔除司马、赵六、李四,从其余人中选择最高的,结果交换;王二麻子和张三位置

//司马相如(200)  赵六(180)  李四(168)  张三(161)  孙七(144)   王二麻子(155)

//第四趟排序,剔除司马、赵六、李四、张三,从其余人中选择最高的,结果交换;王二麻子和孙七位置

//司马相如(200)  赵六(180)  李四(168)  张三(161)  王二麻子(155) 孙七(144) 

public static void sort(int[] a) {

int temp = 0;

for (int i = 0; i <=a.length -1; i++) {

for (int j = 0; j < a.length -1; j++) {

if (a[j] < a[j + 1] ) {//如果第一个元素比下一个小

temp = a[j+ 1]; //交换元素位置,下一个先站出来,留个坑A

a[j+ 1] = a[i]; //第一个元素让出位置,占据留出的坑A,留出坑B

a[i] = temp; //最高的元素占据坑B

}

}

//观察打印结果使用

System.out.print("第" + (i + 1) + "次排序结果:");

for (int index = 0; index < a.length; index++) {

System.out.print(a[index]+ "\t");

}

System.out.println("");

}

}

猜你喜欢

转载自gaojingsong.iteye.com/blog/2284672