`

Java基本排序算法

    博客分类:
  • Java
阅读更多

1、冒泡排序算法

 

public class MaoPao {

	public static void main(String[] args) {
		int[] a = { 10, 3, 55, 22, 25, 44, 9, 58, 33, 12 };
		paiXu(a);
		System.out.println("最终比较结果:");
		print(a);
	}

	private static void print(int[] a) {
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + "\t");
			if(i==a.length-1){
				System.out.println();
			}
		}
	}

	/**
	 * 冒泡排序 
	 * n个数进行排序,需进行n-1轮比较 
	 * 每一轮比较中需进行(n-当前轮数)次两两比较,每比较完一轮排好一个数
	 * @param a
	 */
	public static void paiXu(int[] a) {
		for (int i = 1; i < a.length; i++) {
			for (int j = 0; j < a.length - i; j++) {
				if (a[j] > a[j + 1]) {
					int t = a[j];
					a[j] = a[j + 1];
					a[j + 1] = t;
				}
			}
			System.out.println("第" + i + "轮比较结果:");
			print(a);
		}
	}
}

 测试结果如下:


 

2、选择排序算法

 

public class XuanZe {

	public static void main(String[] args) {
		int a[] = { 3, 2, 8, 6, 4 };
		xuanZe(a);
		System.out.println("最终比较结果:");
		print(a);
	}

	private static void print(int[] a) {
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + "\t");
			if(i==a.length-1){
				System.out.println();
			}
		}
	}

	// 选择排序法
	public static void xuanZe(int[] a) {
		for (int i = 0; i < a.length - 1; i++) {
			int minIndex = i;// 假设最小数的索引
			// 找最小数的索引
			for (int j = i + 1; j < a.length; j++) {
				if (a[j] < a[minIndex]) {
					minIndex = j;
				}
			}
			// 如果假设的最小数索引与找到的最小数索引不相同,那就交换位置
			if (minIndex != i) {
				int t = a[i];
				a[i] = a[minIndex];
				a[minIndex] = t;
			}
			System.out.println("第" + (i+1) + "轮比较结果:");
			print(a);
		}
	}

}

 测试结果如下:


 

3、插入排序算法

 

public class ChaRu {

	public static void main(String[] args) {
		int a[] = { 4, 2, 5, 8, 6 };
		chaRu(a);
		System.out.println("最终比较结果:");
		print(a);
	}

	private static void print(int[] a) {
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + "\t");
			if(i==a.length-1){
				System.out.println();
			}
		}
	}

	// 插入排序法
	// 算法思想:假设前面的数已经排好,用后面的数跟前面的数进行比较
	public static void chaRu(int[] a) {
		//首轮比较,假设第一个数已经排好
		for (int i = 1; i < a.length; i++) {
			// 直到数组下标为0结束比较
			for (int j = i; (j > 0) && (a[j] < a[j - 1]); j--) {
				int t = a[j];
				a[j] = a[j - 1];
				a[j - 1] = t;
			}
			System.out.println("第" + i + "轮比较结果:");
			print(a);
		}
	}

}

 测试结果如下:


 

 

转载请注明出处: http://xieke90.iteye.com/blog/2235769

 

  • 大小: 13.1 KB
  • 大小: 6 KB
  • 大小: 5.9 KB
3
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics