冒泡排序

冒泡排序是最常用的数组排序算法之一,它排序数组元素的过程总是将小数往前移、大数往后放,类似水中气泡往上升的过程。

例程:冒泡正排序

public class BubbleSort {
	public static void main(String[] args) {
		//创建一个乱序的数组
		int[] array = {63,4,24,1,3,15};
		//实例化冒泡排序对象
		BubbleSort sorter = new BubbleSort();
		sorter.sort(array);
	}

	/*
	 * 冒泡排序算法
	 */
	public void sort(int[] array) {
		for(int i = 1; i < array.length; i++) {
			//比较两个相邻的元素,较大的数往后冒泡
			for(int j = 0; j < array.length-i; j++) {
				if(array[j] > array[j+1]) {
					//符合条件的交换变量的值
					int temp = array[j];
					array[j] = array[j+1];
					array[j+1] = temp;
				}
			}
		}
		//输出
		showArray(array);
	}
	/*
	 * 显示数组种的所有元素
	 */
	public void showArray(int[] array) {
		for(int i : array) {	//遍历数组
			System.out.print(" > " + i);
		}
	}
}

直接选择排序

直接选择排序属于选择排序的一种,它的排序速度要比冒泡排序相对快一点,也是常用的排序算法。

基本思想是将指定排序位置与数组其他元素进行对比,如果满足条件就交换元素

例程:直接选择排序正排序

/*
 * 直接选择排序算法例程
 * 
 */
public class SelectSort {
	public static void main(String[] args) {
		//创建一个乱序数组
		int[] array = {63,4,24,1,3,15};
		//创建直接排序类的对象
		SelectSort sorter = new SelectSort();
		//调用一下方法排序
		sorter.sort(array);
	}
	
	/*
	 * 直接选择排序算法
	 * @param array 要排序的数组
	 */
	public void sort(int[] array) {
		int index;
		for(int i = 1; i < array.length; i++) {
			//index用来标记一轮排序所选择元素的位置
			index = 0;
			//注意j的初始值要从1开始,每遍历一遍,所需要遍历的数组元素长度-1
			for(int j=1; j < array.length-i; j++) {
				if(array[j] > array[index]) {
					index = j;
				}
			}
			//交换位置
			int temp = array[array.length-i];
			array[array.length-i] = array[index];
			array[index] = temp;
		}
		
		//输出直接选择排序后的数组值
		showArray(array);
	}
	/*
	 * 显示数组中的所有元素
	 * @param array 要显示的数组
	 */
	public void showArray(int[] array) {
		for(int i : array) {
			System.out.print(" > " + i);
		} 
		System.out.println();
	}
}

反转排序

反转排序也是常用的开发算法,就是将原有数组的按相反的顺序重新排列。基本思想就是将最后一个元素与第一个元素替换,倒数第二个与第二个元素替换,一次类推,直到完成所有反转。

例程:反转排序

public class ReverserSort {
	public static void main(String[] args) {
		int[] array = {10,20,30,40,50,60};
		//创建反转排序类的对象
		ReverserSort sorter = new ReverserSort();
		//调用排序方法
		sorter.sort(array);
	}
	/*
	*	反转排序算法
	*/
	public void sort(int[] array) {
		//输出排序前的内容
		System.out.println("数组原有内容:");
		showArray(array);
		int temp;
		int len = array.length;
		for(int i=0; i < len/2; i++) {
			temp = array[i];
			array[i] = array[len-1-i];
			array[len-1-i] = temp;
		}
		//输出排序后的内容
		System.out.println("数组反转后的内容:");
		showArray(array);
	}
	/*
	 * 显示数组中所有元素
	 */
	public void showArray(int[] array) {
		for(int i : array) {	//遍历数组
			System.out.print("\t" + i);
		}
		System.out.println();
	}
}