手写常用算法

1.快速排序

class Solution {
    public void quickSort(int[] num, int left, int right) {
        int i, j, tmp;
        if(left > right) return;
        tmp = num[left]; //基准点
        i = left;
        j = right;
        while(i != j) {
            while(i<j && num[j] >= tmp) j--;
            while(i<j && num[i] <= tmp) i++;
            if(i < j) swap(num, i, j);
        }
        swap(num, left, j);
        quickSort(num, left, right - 1);
        quickSort(num, left + 1, right);
        return;
    }
    
    public static void swap(int[] num, int i, int j) {
        int tmp = num[i];
        num[i] = num[j];
        num[j] = tmp;
    }
    
    public static void main(String[] args) {
        Solution s = new Solution();
        int[] num = {2,1,5,3,4};
        s.quickSort(num, 0, 4);
        for(int i=0; i<5; i++) {
            System.out.println(num[i]);
        }
    }
}
1
2
3
4
5

猜你喜欢

转载自www.cnblogs.com/Roni-i/p/10464446.html