美文网首页
常见算法 (java实现)

常见算法 (java实现)

作者: AlanFu | 来源:发表于2018-04-26 16:00 被阅读0次
    WechatIMG355.jpeg

    1.冒泡算法 :大数像气泡一样往上冒。

    
        public static void bubbleSort(int[] numbers){
            int temp=0;
            int size=numbers.length;
            for(int i=0;i<size-1;i++){
                for(int j=0;j<size-1-i;j++){
                    if(numbers[j]>numbers[j+1]){
                        temp=numbers[j];
                        numbers[j]=numbers[j+1];
                        numbers[j+1]=temp;
    
                    }
                }
            }
        }
    

    2.快速排序:找到中间值,分成左右两组,左边的数值均小于右边的数值。然后递归处理。直到排序为有序数据。简单高效。

    查找中轴(最低位作为中轴)所在位置:

    public static int getMiddle(int[] numbers,int low,int high){
      int temp=numbers[low];
    while(low<high){
        while(low<high&&numbers[high]>=temp){
          high--;
        }
        numbers[low]=numbers[high];
        while(low<high&&numbers[low]<temp){
              low++;
        }
       numbers[high]=numbers[low];
    }
    numbers[low]=temp;
    return low;
    }
    

    递归实现

    public static void quickSort(int[] numbers,int low,int high){
        if(low<high){
            int middle=getMiddle(numbers,low,high);
            quickSort(numbers,low,middle-1);
            quickSort(numbers,middle+1,high);
    }
    
    }
    

    3.选择排序:在无序的数组中选择最小的数字与第一位交换,然后在剩下的数组再选择最小的数组与第二位交换。依次推进,直到有序。

    public static void selectSort(int[] numbers) {
            int size = numbers.length;
            int temp;
            for(int i=0;i<size-1;i++){
                int k=i;
                for(int j=size-1;j>i;j--){
                    if(numbers[j]<numbers[k]){
                        k=j;
                    }
                }
                temp=numbers[i];
                numbers[i]=numbers[k];
                numbers[k]=temp;
            }
        }
    
    

    相关文章

      网友评论

          本文标题:常见算法 (java实现)

          本文链接:https://www.haomeiwen.com/subject/dttmlftx.html