java-冒泡排序-简单选择排序

 

 

1 冒泡

 

冒泡排序动画演示: http://www.cncfan.com/html/88/5380.html   

 

代码:

/**
 * 冒泡排序
 * @author zm
 * 大循环和小循环要结合一起看
 * 小循环负责 当前组下找两两数字比较,找到最大/小值,并将这个最大/小值放在最后
 * 大循环负责 将组内所有数据都安排到合理的位置( eg: 6个数字组成的数组,你需要执行 6-1次的组内小循环,才能将这6个数字按照从大/小的顺序安排到合理的位置)
 */
public class BubbleSort {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		int a[] = new int[4];
		a[0] = 8;
		a[1] = 3;
		a[2] = -1;
		a[3] = 0;
		
		bubbleSort(a);
		for(int i=0; i a[j+1]){
					temp = a[j];
					a[j] = a[j+1];
					a[j+1] = temp;
				}
			}
		}
	}

}

 

 

 

2 快速选择

 

 

/**
 * 简单选择排序(效率要比冒泡排序高)
 * 对n个记录进行扫描,选择最小的,进行输出
 * 对n-1访问记录进行扫描,选择最小的进行输出
 * .... 不断重复
 * 直到只剩下一个记录为止。
 * @author zm
 * 
 */
public class SelectSort {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		int a[] = new int[4];
		a[0] = 8;
		a[1] = 3;
		a[2] = -1;
		a[3] = 0;
		
		selectSort(a);
		for(int i=0; i

 

 

 

3 两者简单比较:

 

3.1 冒泡排序交换次数多于选择排序,选择排序的内存循环中交换仅仅是在内层for结束后才交换,远远小于冒泡排序


3.2 冒泡排序是将最大/小值放在数组最右侧, 选择排序是将最大/最小数放在数组最左侧。

 

 

你可能感兴趣的:(数据结构基础)