希尔、冒泡、选择、插入排序

一、数组排序

public class T1 {

	public static void main(String[] args) {
		T1 t = new T1();
		t.maopao();
		System.out.println("  ");
		t.paixu();
		System.out.println("  ");
		t.shell();
	}

	// 希尔排序
	private void shell() {
		int a[] = { 3, 4, 1, 5, 2 };
		int j = 0;
		int temp = 0;
		// 分组
		for (int increment = a.length / 2; increment > 0; increment /= 2) {
			// 每个组内排序
			for (int i = increment; i < a.length; i++) {
				temp = a[i];
				for (j = 1; j >= increment; j -= increment) {
					if (temp < a[j - increment]) {
						a[j] = a[j - increment];
					} else {
						break;
					}
				}
				a[j] = temp;
			}
		}
		for (int i : a) {
			System.out.print(i);
		}
	}


	// 选择法排序
	private void paixu() {
		int a[] = { 3, 4, 1, 5, 2 };
		int temp;
		for (int i = 0; i < a.length; i++) {
			int lowIndex = i;
			for (int j = i + 1; j < a.length; j++) {
				if (a[j] < a[lowIndex]) {
					lowIndex = j;
				}
			}
			// 交换
			temp = a[i];
			a[i] = a[lowIndex];
			a[lowIndex] = temp;
		}
		for (int i : a) {
			System.out.print(i);
		}
	}


	// 冒泡排序
	private void maopao() {
		int a[] = { 3, 4, 1, 5, 2 };

		for (int i = 0; i < a.length; i++) {
			for (int j = i + 1; j < a.length; j++) {
				// 注意j的开始值是i+1,因为按照排序规则,比a[i]大的值都应该在它后面
				if (a[i] > a[j]) {
					int temp = a[j];
					a[j] = a[i];
					a[i] = temp;
				}
			}
		}

		for (int i : a) {
			System.out.print(i);
		}
	}
}

 

备注:在java.util.arrays类中有一个静态sord()方法,利用它可以对数组进行升序排序。如果想要实现降序的话,需要写Comparator比较器。

你可能感兴趣的:(冒泡排序,希尔排序,数组排序,选择法排序,插入法排序)