首页 > 学院 > 开发设计 > 正文

【算法】程序猿不写代码是不对的20

2019-11-08 01:03:17
字体:
来源:转载
供稿:网友
package com.kingdz.algorithm.time201702;import java.util.Arrays;/** * 算法书中的堆排序实现 *  * @author kingdz *  */public class Algo21 {	public static void main(String[] args) {		int count = 10;		int[] number = new int[count];		number = Algo13.fillArray(count, false);		System.out.PRintln(Arrays.toString(number));		heapSort(number, number.length);		System.out.println(Arrays.toString(number));	}	/**	 * 调整第s个结点	 * 	 * @param a	 * @param s	 * @param n	 */	static void heapAdjust(int[] a, int s, int n) {		// 第s个节点有子树		while (2 * s + 1 < n) {			int j = 2 * s + 1;			// 如果有右子树			if (j + 1 < n) {				// 左子树小于右子树				if (a[j] < a[j + 1]) {					j++;				}			}			// s结点如果小于左右子树中最大的j,则交换			if (a[s] < a[j]) {				int t = a[s];				a[s] = a[j];				a[j] = t;				s = j;			} else {				break;			}		}	}	static void heapSort(int[] a, int n) {		for (int i = n / 2 - 1; i >= 0; i--) {			heapAdjust(a, i, n);		}		for (int i = n - 1; i > 0; i--) {			int t = a[0];			a[0] = a[i];			a[i] = t;			heapAdjust(a, 0, i);		}	}}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表