堆排序
来源:互联网 发布:淘宝认证在哪里 编辑:程序博客网 时间:2024/06/06 07:41
public classMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
int test[] ={0,-1,78,22,45,-100};
HeapSort(test);
for(inti = 0;i<test.length;i++){
System.out.println(test[i]);
}
}
public static void HeapSort(intvalues[]){
for( int i =values.length/2 -1;i>=0;i--){
MinHeapFiexDown(values,i,values.length);
}
for( int i =values.length -1 ;i >=1 ;i--){
Swap(values,i,0);
MinHeapFiexDown(values,0,i);
}
}
// 从i节点开始调整,n为节点总数,从0开始计算i节点的子节点为:2*i+1,2*i+2
@SuppressWarnings("unused")
private static void MinHeapFiexDown(inta[],inti,intn){
int j,temp;
temp = a[i];
j = 2*i+1;
while(j <n){
// 在左右孩子中获取最小的
if(j + 1 <n && a[j + 1] <a[j]) j++;
if(a[j] >=temp) break;
a[i] =a[j];
i = j;
j = 2 * i + 1;
}
a[i] =temp;
}
@SuppressWarnings("unused")
private static void Swap(intvalues[],intaIdx,intbIdx){
int temp = values[aIdx];
values[aIdx] =values[bIdx];
values[bIdx] =temp;
}
}
//输出结果:
78
45
22
0
-1
-100
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- iOS 后台运行
- 冒泡排序
- SzNOI 双向约瑟夫(双向链表)
- 第十三周项目4-数组的排序(3 选择排序)
- [Java基础] 数组
- 堆排序
- 程序员如何保持身心健康?
- iOS网络编程之NSURLConnection
- 程序员如何保持身心健康?
- UDP:用户数据报
- 第十三周项目三 成绩处理函数版
- 13周(数组倒序输出)
- C语言第十三回合:再谈指针
- HDU—— 1070 Milk