经典排序算法

本文详细介绍了快速排序算法的原理和过程,通过实例展示了如何通过选择基准数并将其左右两侧的元素进行对比和交换来实现数组的排序。同时,提供了快速排序的Java代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

快速排序

原理:
每次循环根据指定的基准数,将其他元素分别放置在其左右,由此循环。
例:
int[] arr={6,1,2,7,9,3,4,5,10,8};
               /\                           |
   基准数   first                   end
first找比基准值大的,end找比基准值小的
int[] arr={6,1,2,7,9,3,4,5,10,8};
               /        |           |
   基准数        first       end
交换first和end
int[] arr={6,1,2,5,9,3,4,7,10,8};
继续移动
int[] arr={6,1,2,5,9,3,4,7,10,8};
               /           |     |
   基准数           first  end
交换first和end
int[] arr={6,1,2,5,4,3,9,7,10,8};
               /           |     |
   基准数           first  end
继续移动
int[] arr={6,1,2,5,4,3,9,7,10,8};
               /              |
   基准数           first end
first和end都指向中间,交换基准数和中间数
int[] arr={3,1,2,5,4,6,9,7,10,8};
对基准数两边的数组重复操作

代码实现

public class QuickSort {
    public void QuickSort (int[] arr, int frist, int last) {
        if (frist > last) return;//递归出口
        int i = frist;
        int j = last;
        int temp = arr[frist];
        while (i != j) {
            while (arr[j] >= temp && j > i) {//从右往左找到第一个小于mark的数
                j--;
            }
            while (arr[i] <= temp && i < j) {//从左往右找到第一个大于mark的数
                i++;
            }
            if (i < j) {//交换
                int t = arr[i];
                arr[i] = arr[j];
                arr[j] = t;
            }
        }
        if (i == j) {//交换基准数
            arr[frist] = arr[i];
            arr[i] = temp;
        }

        QuickSort (arr, frist, i - 1);//前半部分继续进行
        QuickSort (arr, i + 1, last);//后半部分继续进行

    }
}
原文:https://blog.csdn.net/Advance_/article/details/81880509 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值