C语言之指针数组基础学习

*a++从右至左先a++不需要给a++加括号

关系运算符(<,>,>=,<=)也都可以用

但是使用时最好类型相同

快速排序:

void quickSort(int *begin, int *end) {

    int *p = begin; // 定义指针p指向数组的开头

    int *q = end;  // 定义指针q指向数组的结尾

    int *k = NULL; // 定义指针k

    if (begin >= end) { // 如果begin >= end,即待排序数组中只有一个元素或没有元素,直接返回

        return;

    }

    k = begin; // 将指针k指向数组开头的元素

    while (begin < end) {

        // 从数组结尾向开头遍历,找到一个小于k元素的值

        while (begin < end && *end >= *k) {

            --end;

        }

        // 从数组开头向结尾遍历,找到一个大于k元素的值

        while (begin < end && *begin <= *k) {

            ++begin;

        }

        // 交换begin和end指向的元素

        swap(begin, end);

    }

    // 将基准元素放到正确的位置上

    swap(begin, k);

    // 递归对左右两个子数组进行快速排序

    quickSort(p, end - 1); // 对左半数组进行快速排序

    quickSort(begin + 1, q); // 对右半数组进行快速排序

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值