0 .前言我找不到一篇让人心情愉快的一次性理解的文章,所以我决定把每一步都图解出来。代码在最后
把共享博客共享的教科书图放在这里
1 .图解开始
贴一张大图
2. Java代码实现package learn.algorithm.sort; import java.util.Arrays; import Java.util.stream.intstream; /**快速排序*应用最广泛的排序算法,实现简单,可应用于各种传入数据,在典型的APP应用中比其他排序算法快得多。 最引人注目的特点是就地排序,长度为n的数组排序所需的时间与NlgN成正比。 * @ authorwangwenlei * @ date :2021/5/27 * */publicclassfastsort { publicstaticvoidmain (字符串[ ] args (int ) ) ) ) fastsort(data,0,data.length - 1 ); arrays.stream (数据).Foreach ) system.out:3360println; } publicstaticvoidfastsort (int [ ] data,int low,int high ) if (low=high ) { return; } int pivot=data[low]; int i=low; int j=high; 用于将j向左移动到while(Ij )//data [ j ] pivot while (ijpivotdata [ j ] ) (j----; (if ) Ij ) ) { data [i]=data[j]; I; }while(Ijpivotdata[I] ) I; (//下面的if在第一次创建时丢失,逻辑if(Ij ) ) { data [j]=data[i]; j----; } } data[i]=pivot; fastsort (数据,低,----I ); //我在这里第一次写的时候用错了I,现在改成了j。 错误的原因I在上面已经减少了快速(数据、j、高)。 }清爽的茶博客
推荐博客的文章也很好。 https://blog.csdn.net/weixin _ 42109012/article/details/91645051