常见算法 (java实现)

2018-04-26  本文已影响0人  AlanFu
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;
        }
    }

上一篇下一篇

猜你喜欢

热点阅读