网络营销成餐饮业市场新高地
2011-11-10 15:50
176 查看
堆排序有以下需要注意的:
parent=n/2
left = 2 * n;
right = 2 * n + 1;
对某一个节点进行最大堆化
maxHeap
然后构造堆
buildHeap
最后是堆排序
heapSort
具体代码:
parent=n/2
left = 2 * n;
right = 2 * n + 1;
对某一个节点进行最大堆化
maxHeap
然后构造堆
buildHeap
最后是堆排序
heapSort
具体代码:
package com.taobao.saleengine.core.util; public class HeapSort2 { private static int left(int i) { return i * 2;} private static int right(int i) { return i * 2 + 1;} private static void maxHeap(int[] a, int i, int length) { int l = left(i); int r = right(i); int largest = i; while(l<length && r<length) { if(a[l]>a[largest]) { largest = l; } if(a[r] > a[largest]) { largest = r; } if(largest != i) { int temp = a[largest]; a[largest] = a[i]; a[i] = temp; i = largest; l = left(i); r = right(i); } else { break; } } } private static void buildHeap(int a[], int length) { int start = length / 2 + 1; for(int i=start;i>=0;i--) { maxHeap(a, i, length); } } private static void heapSort(int a[]) { int length = a.length; buildHeap(a, length); while(length >= 1) { int temp = a[0]; a[0] = a[length - 1]; a[length - 1] = temp; maxHeap(a, 0, length - 1); length--; } } public static void printline(String s, int[] v) { System.out.println(s + toString(v)); } public static String toString(int a[]) { StringBuilder s = new StringBuilder(); for (int x : a) s.append(" ").append(x); return s.toString(); } public static void main(String[] args) { int a[] = new int[] { 16, 4, 10, 14, 7, 9, 3, 2, 8, 1}; heapSort(a); printline("sorted ", a); } }
相关文章推荐
- 电子商务外包是网络营销市场需求
- 【学习笔记】——网络营销3(市场策略)
- 从事网络营销,你的市场在哪里?
- 网游市场在网络营销、广告、奖品何去何从?
- 中药博览会网络营销市场剖析
- 网络营销第一课:市场营销基础(2)
- 网络营销第一课:市场营销基础
- 市场营销和网络营销的有机结合
- CP2C模式下对网络营销模式的应用与思考
- 2006年中国网络购物市场规模达到312亿元
- 常用的24种网络营销推广方法
- 打通网络营销的任督二脉
- 2006年BtoB网络营销六大趋势
- 第三方解决方案与网络会员制营销案例
- 7月国内网络接入商市场:中国电信份额跌破50%
- 支付平台,渠道经销商,客服,在网络营销中,和传统一样
- 一个经销商老板眼中的网络营销
- 药品行业网络营销策略
- 中国网络广告市场方兴未艾
- 被高企的社会化网络精准营销