各种排序

来源:互联网 发布:java int转char数组 编辑:程序博客网 时间:2024/06/05 18:37
import java.util.Arrays;/** * Created by 糖糖 on 2017/7/19. */public class Test1 {    public  static void main(String args[]){      int arr[]={2,4,1,55,5,12};      //selectSort(arr);        //BubbleSort(arr);      //  quickSort(arr,0,arr.length-1);        HeadSort(arr);      System.out.println(Arrays.toString(arr));    }    public  static  void  selectSort(int []arr){        int flag=0;        int tmp=0;        for(int i=0;i<arr.length;i++)        {             tmp=arr[i];             flag=i;             for(int j=i+1;j<arr.length;j++){                 if(arr[j]>tmp){                     flag=j;                     tmp=arr[j];                 }             }            if(flag!=i)            {                arr[flag]=arr[i];                arr[i]=tmp;            }        }    }    public  static void  BubbleSort(int []arr){        for(int i=0;i<arr.length-1;i++){            for(int j=0;j<arr.length-i-1;j++){                if(arr[j]>arr[j+1])                {                    int tmp=arr[j];                    arr[j]=arr[j+1];                    arr[j+1]=tmp;                }            }        }    }    public  static  void  quickSort(int arr[],int start,int end){        if(start>end)            return;        int index=start;        int i=start;        int j=end;        int temp=arr[index];        int len=arr.length-1;        while (i<j){        while (arr[j]>temp&&i<j)            j--;        while (arr[i]<=temp&&i<j)            i++;        if(i<j)        {            int a=arr[i];            arr[i]=arr[j];            arr[j]=a;        }        }        arr[index]=arr[i];        arr[i]=temp;        quickSort(arr,start,i-1);        quickSort(arr,i+1,end);    }    public  static  void HeadSort(int arr[])    {        for(int i=arr.length/2-1;i>=0;i--){            adjustHead(arr,arr.length,i);        }        for(int i=arr.length-1;i>=0;i--){            int tmp=arr[i];            arr[i]=arr[0];            arr[0]=tmp;            adjustHead(arr,i,0);        }    }    public static void adjustHead(int arr[],int len,int index){        int right=index*2+2;        int left=index*2+1;        int flag=index;        if(index<=len/2){            if(right<len&&arr[right]>arr[flag])                flag=right;            if(left<len&&arr[left]>arr[flag])                flag=left;            if(flag!=index)            {                int a=arr[flag];                arr[flag]=arr[index];                arr[index]=a;                adjustHead(arr,len,flag);            }        }    }}