Java教程

数据结构与算法-(选择排序)排序算法

本文主要是介绍数据结构与算法-(选择排序)排序算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

数据结构与算法-(选择排序)排序算法

选择排序中第一种是简单选择排序
package suanfa;

public class MySort {

    private void swap(int[] data,int m,int n){
        int temp=data[m];
        data[m]=data[n];
        data[n]=temp;
    }
    public void selectSort(int[] data){
        for(int i=0;i<data.length;i++){
            int max=0;
            for(int j=0;j<data.length-i;j++){
                if(data[j]>data[max]){
                    max=j;
                }
            }
            swap(data,max,data.length-1-i);
        }
    }
    public static void main(String[] args){
        int[] data=new int[]{9,8,7,65,4,3,32,223,1};
        MySort mySort=new MySort();
        mySort.selectSort(data);
        for(int value:data){
            System.out.println(value);
        }
    }
}
选择排序的第二种是堆排序,在二叉树中有两种堆,一种是头节点大于左右子节点(大顶堆),一种是头节点小于左右子节点(小顶堆)
package suanfa;

public class MySort {

    private void swap(int[] data,int m,int n){
        int temp=data[m];
        data[m]=data[n];
        data[n]=temp;
    }
    public void heapSort(int[] data){
        buildHeap(data,data.length);

        for(int i=0;i<data.length;i++){
            swap(data,0,data.length-1-i);
            buildHeap(data,data.length-i-1);
        }
    }
    private void buildHeap(int[] data,int len){
        for(int i=len/2;i>=0;i--){
            adjust(data,i,len);
        }
    }
    private void adjust(int[] data,int i,int len){
        int left=i*2+1;
        int right=left+1;
        int max=i;
        if(left<len&&data[max]<data[left]){
            max=left;
        }
        if(right<len&&data[max]<data[right]){
            max=right;
        }
        swap(data,max,i);
    }
    public static void main(String[] args){
        int[] data=new int[]{9,8,7,65,4,3,32,223,1};
        MySort mySort=new MySort();
        mySort.heapSort(data);
        for(int value:data){
            System.out.println(value);
        }
    }
}
这篇关于数据结构与算法-(选择排序)排序算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!