小白懂算法之快速排序
2021-03-17 06:24
标签:思路 实现 介绍 概念 ++ rgba stat temp deb 一.快速排序介绍 快速排序(Quick Sort)概念:是由冒泡排序改进而得到的。在冒泡排序过程中,只对相邻的两个记录进行比较,因此每次交换两个相邻记录时只能消除一个逆序。如果能通过两个(不相邻)记录的一次交换,消除多个逆序,则会大大加快排序的速度。快速排序方法中的一次交换可以消除多个逆序。 二.算法原理 快速排序的算法原理:在待排序的n个记录中任取一个记录(通常取第一个记录)作为基准数(与其他记录比较的数),设其关键字为pivotkey。经过一趟排序后,把所有关键字小于pivotkey的记录交换到前面,把所有关键字大于pivotkey的记录交换到后面,结果将待排序记录分成两个子表,最后将基准数放置在分界处的位置。然后,分别对左右子表重复上述过程,直至每个子表只有一个记录时排序完成。 三.实现代码(Java实现) 强调: 1.在上面代码的情况,实际上不可能会出现left > right的情况,都是在left = right的时候,不满足left 2.记住如果基准数在数组的左边,那么必须从right先开始,因为从right先开始就能保证right右测的数一定是大于基准数的,到时候left和right处在同一个位置时,此位置的右边一定是比基准数大的;具体原因还是因为受left main方法测试: OK,如果有任何疑问可在下面留言! 小白懂算法之快速排序 标签:思路 实现 介绍 概念 ++ rgba stat temp deb 原文地址:https://www.cnblogs.com/ibcdwx/p/13976792.html public static void FastSort(int[] arr,int i,int j) {
/**
* 实现思路:
* 在数组随便选择一个作为基准数,默认是数组第一个
* 需要两个伪指针指向在数组两边的元素并向内逐一与基准数比较
* 左边指针 为 left 专门查找比基准数大的数,右边指针 right 专门查找比基准数小的数
* 若left>right则逻辑不成立
* 在满足left
public static void main(String[] args) {
//创建一个无序数组
int[] arr = new int[] {2,3,1,4,5,7,6,8,10,9};
//调用快速排序方法,返回一个排序后的方法
FastSort(arr,0,arr.length-1);
//遍历数组
System.out.print("最终结果:");
for(int i=0;i