冒泡排序、二分法查找基於Java的簡單實現

1.冒泡排序:

  • 在要排序的一組數中,對當前還未排好序的範圍內的全部數,自上而下對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。即:每當兩相鄰的數比較後發現它們的排序與排序要求相反時,就將它們互換。
  • 一個數比完,再開始另一個數

    代碼:

import java.util.Arrays;

public class Demo2 {

    public static void main(String[] args) {
        int []values={5,6,8,1,12,19,56,32};
        bubblesort(values);
        System.out.println(Arrays.toString(values));
    }

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

還有這種更符合冒泡的,從下往上比較:

import java.util.Arrays;

public class Demo2 {

    public static void main(String[] args) {
        int []values={5,6,8,1,12,19,56,32};
        bubblesort(values);
        System.out.println(Arrays.toString(values));
    }

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

輸出都爲:

[1, 5, 6, 8, 12, 19, 32, 56]

二分法查找:
對於大量數據可以使用,數列要是先是有序的,假定升序,然後從中間開始搜尋,如果比中間數小,再從左邊的中間找,以此類推

import java.util.Arrays;

public class BinarySearch {
    public static int search(int a[],int nums){
        int low=0;
        int high=a.length-1;

        while(low<=high){
            int mid=(low+high)/2;
            if(nums>a[mid]){
                low=mid+1;
            }else if(nums<a[mid]){
                high=mid-1;
            }else{
                return mid;
            }
        }
        return -1;
    }
    public static void main(String[] args) {
        int []a={5,9,6,3,56,157,535,464,158};
        Arrays.sort(a);
        int find=BinarySearch.search(a, 3);
        if(find==-1){
            System.out.println("找不到數值");
        }else{
            System.out.println("找到數值,索引:"+find);
        }
    }

}

輸出:

找到數值,索引:0
發佈了50 篇原創文章 · 獲贊 8 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章