一、冒泡排序简述(升序排序)
比较相邻的两个元素大小,如果左边的元素大于右边的元素,那么就交换连个元素的位置。 对每一对相邻的元素做上面相同的工作,从开始第一对到最后一对,执行完一轮后就能得到最后一个元素是最大的。 重复以上步骤,每轮比较都不比较上一轮得到的最大的元素,即需要进行size()-1次。 第一轮对n(n即为长度)个元素进行n-1次比较,第一轮结束第n个元素就是本轮中最大的; 第二轮对n-1个元素进行n-1-1次比较,第二轮结束第n-1个元素就是本轮中最大的; … 以此类推,每轮比较的元素会越来越少,直到没有需要再比较的元素。
二、代码案例
利用双层for循环来进行冒泡排序
package sort;
import java.util.ArrayList;
import java.util.List;
public class BubbleSort {
public List<Integer> bubbleSortAsc(List<Integer> list){
for(int i=0; i<list.size()-1; i++){
for(int j=0; j<list.size()-i-1; j++){
int leftNum = list.get(j);
int rightNum = list.get(j+1);
if(leftNum > rightNum){
list.set(j, rightNum);
list.set(j+1, leftNum);
}
}
}
return list;
}
public List<Integer> bubbleSortDesc(List<Integer> list){
for(int i=0; i<list.size()-1; i++){
for(int j=0; j<list.size()-i-1; j++){
int leftNum = list.get(j);
int rightNum = list.get(j+1);
if(leftNum < rightNum){
list.set(j, rightNum);
list.set(j+1, leftNum);
}
}
}
return list;
}
public static void main(String[] args) {
List<Integer> nList = new ArrayList<Integer>();
nList.add(52);
nList.add(42);
nList.add(82);
nList.add(62);
nList.add(102);
nList.add(12);
nList.add(22);
nList.add(32);
nList.add(2);
nList.add(92);
nList.add(72);
BubbleSort bs = new BubbleSort();
System.out.println("升序排序");
System.out.println(bs.bubbleSortDesc(nList));
System.out.println("降序排序");
System.out.println(bs.bubbleSortAsc(nList));
}
}
运行结果:
三、Debug调试(代码出错时解决方法)
- 在需要断点的行的行号前打断点(双击)
- Debug运行(右键弹出菜单选择Debug As)
- F5依次执行代码,查看每次循环的结果,找到出错点
|