双向冒泡排序

import java.util.Arrays;

public class My {
    public void bubbleSort(int[] arr) {
        int n=arr.length;
        int left = 0, right = n - 1;
        int p = 0;
        while (left < right) {
            for (int i = left; i < right; i++) {
                if (arr[i] > arr[i + 1]) {
                    int temp = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1] = temp;
                    p = i;
                }
            }
            right = p;
            for (int i = right; i > left; i--) {
                if (arr[i] < arr[i - 1]) {
                    int temp = arr[i];
                    arr[i] = arr[i - 1];
                    arr[i - 1] = temp;
                    p = i;
                }
            }
            left = p;
        }
    }

    public static void main(String[] args) {
        My my = new My();
        int[] arr = {90, 80, 1, 2, 3, 4, 5};
        my.bubbleSort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

 

你可能感兴趣的:(双向冒泡排序)