讲讲几种常见的排序算法(一)

堆排序

思路:构建一个小顶堆,小顶堆就是棵二叉树,他的左右孩子均大于他的根节点(大顶堆反之)。
构建完一个小顶堆后,开始排序。 将最后一个节点和第一个节点交换位置(根节点是最小的,最小的顶点放到了后面),交换后进行调整,保持小顶堆(次小的顶点到了根节点)。
依次执行下去,这样每一次交换将最小的顶点的放到了最后,所以最后数组会从大到小排列。
大学生就业培训,高中生培训,在职人员转行培训,企业团训

public static void heapSort(int array[])
    {        int j=array.length;        //构建堆
        for (int i = j/2-1; i >=0; i--) {
            f(i,j,array);
        }        //堆排序,从后面的节点开始更第一个节点交换位置,然后进行调整,这样数组将从大到小排列
        for (int i = j-1; i>=0; i--) {//          System.out.println(array[0]);
            swap(array,i,0);
            f(0,i,array);
        }
    }    public static void f(int low,int high,int array[])
    {        int i=low;        int j=2*i+1;        int temp=array[i];   &nbs
        
		

网友评论