现有如下六人,身高如下:
//张三(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("");
}
}
原文:http://gaojingsong.iteye.com/blog/2284672