快速排序算法(java实现)

Bertha 。 2022-03-01 16:20 282阅读 0赞

一.思想:

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据比另一部分的所有数据都要小,然后再用递归方法对着两部分分别进行快速排序,当每一部分不能再细分时完成排序.

二,解释

  1. 初始数组
初始数组
























下标 0 1 2 3 4 5 6 7
6 4 7 9 2 8 1 10

l = 0, h = 7, k = 6

2.一趟排序(对于每一趟排序都分为两部分,先是从右边找比自己小的,后是从左边找比自己大的)

一趟排序
























下标 0 1 2 3 4 5 6 7
1 4 7 9 2 8 6 10

I = 0, h = 6, k = 6

一趟排序
























下标 0 1 2 3 4 5 6 7
1 4 6 9 2 8 7 10

I = 2, h = 6, k = 6

注意:只要l < h,排序还要进行下去,直到不满足循环条件为止,此时一趟排序完成,然后对左右两部分递归上述操作即可

三.代码

  1. package 快速排序;
  2. public class FastSort {
  3. public static void main(String[] args) {
  4. // TODO 自动生成的方法存根
  5. int []a = {6, 4, 7, 9, 2, 8, 1, 10};
  6. for(int i = 0; i < a.length; i++){
  7. System.out.print(a[i] + " ");
  8. }
  9. System.out.println();
  10. sort(a, 0, a.length-1);
  11. for(int i = 0; i < a.length; i++){
  12. System.out.print(a[i] + " ");
  13. }
  14. }
  15. public static void sort(int []a, int low, int high){
  16. int l = low;
  17. int h = high;
  18. int k = a[low];
  19. while(l < h){
  20. while(l < h && a[h] >= k){
  21. h--;
  22. }
  23. if(l < h){
  24. int temp = a[h];
  25. a[h] = a[l];
  26. a[l] = temp;
  27. l++;
  28. }
  29. while(l < h && a[l] <= k){
  30. l++;
  31. }
  32. if(l < h){
  33. int temp = a[l];
  34. a[l] = a[h];
  35. a[h] = temp;
  36. h--;
  37. }
  38. }
  39. if(l-1 > low)
  40. sort(a, low, l-1);
  41. if(h+1 < high)
  42. sort(a, h+1, high);
  43. }
  44. }

输出:

2019032312173058.png

发表评论

表情:
评论列表 (有 0 条评论,282人围观)

还没有评论,来说两句吧...

相关阅读

    相关 java实现快速排序算法

    快排基本思想:首先选定一个轴值(就是比较的基准)将待排序的记录划分为两个独立的部分,左侧记录的关键码都是小于基准或等于轴值得,右侧记录的关键码都是大于或等于轴值,然后再针对这两

    相关 快速排序算法(Java实现)

    1、基本思想 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以

    相关 快速排序算法(java实现)

    一.思想: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据比另一部分的所有数据都要小,然后再用递归方法对着两部分分别进行快速排序,当每一部分不能再细分

    相关 排序算法快速排序Java实现

    快速排序是一种交换排序,这种排序的思想是把数组通过不断的递归,把数组中的数据分成两部分,前半部分小于某一个数,后半部分大于这个数,接着再对这两部分分别使用这种思想进行交换排序。