java的算法实现-快排(通过泛型实现)

通过泛型实现了快排

< T extends Comparable< T>>的意思是声明了一个泛型,该泛型继承了Comparable(可以通过.compareTo(x)比较,比x大就返回大于0,等于返回0,小于返回小于0)
如果是 < T extends Comparable< ? extends T>代表可以是T的子类
如果是 < T extends Comparable< ? super T> 代表可以是T的父类

import java.util.Arrays;
import java.util.Collection;

public class QuickSort {
    public static  <T extends Comparable<T>> void myQuickSort(T[] t, int a,int b) {
        if (a < b) {
            int q = Partition(t, a, b);
            myQuickSort(t, a, q - 1);
            myQuickSort(t, q + 1, b);
        }
    }

    public static <T extends Comparable<T>> int Partition(T[] t, int a, int b) {
        int l = a;
        int r = b + 1;
        T x = t[l];
        while (true) {
            //找到比他大的或者相等的  (他比x小就继续直到找到比他大或者相等的)
            while (t[++l].compareTo(x) < 0 && l < b);
            //找到比他小的或者相等的   (他比x大就继续直到找到比他小或者相等的)
            while (t[--r].compareTo(x) > 0);
            if (l >= r) {
                break;
            }
            //如果下标正常 就交换
            swap(t, l, r);
        }
        //把轴放进合适的位置,此时左边所有都比它小
        t[a] = t[r];
        t[r] = x;
        return r;
    }

    //java实现swap
    public static <T extends Comparable<T>> void swap(T[] data, int a, int b) {
        T t = data[a];
        data[a] = data[b];
        data[b] = t;
    }

    public static void main(String[] args) {
        Integer a[] = {0, 2, 2, 54, 1};
        myQuickSort(a, 0, 4);
        System.out.println(Arrays.toString(a));
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值