Java实现的堆排序(最小堆)

来源:互联网 发布:剑网三有mac版吗 编辑:程序博客网 时间:2024/06/05 03:19

//堆排序的实现(最小堆)
public class HeapSort {

static int temp;public static void shift(int r[],int k,int m){//筛选法调整堆    int i=k,j=k*2;    while(j<=m){        if(j<m&&r[j]<r[j+1]) j++;        if(r[i]<r[j]){            temp = r[i];            r[i] = r[j];            r[j] = temp;            i=j;j=i*2;              }else{            break;        }    }}public static void heapSort(int r[],int m){//m为数组长度,0为暂存单元    for(int i=m/2;i>=1;i--){//初始化        shift(r, i, m);    }    for(int i=1;i<m;i++){        temp=r[1];        r[1]=r[m-i+1];        r[m-i+1]=temp;        shift(r, 1, m-i);    }}public static void main(String[] args) {    int r[]={-1,36,30,18,40,32,45,22,50};    heapSort(r, 8);    for(int x : r){        System.out.print(x+" ");    }}

}

0 0
原创粉丝点击