爪哇2博客
爪哇2博客

用Java快速排序

如果您想练习数据结构和算法程序,可以通过 数据结构和算法面试题.

快速排序或分区交换排序是一种 排序算法,它使用分而治之算法。

In quick 分类, we first choose a and divide 整型o two sublists,one will contain elements lower than 枢 and other will have elements greater than 枢.

快速排序算法

可以说数组是arr []

  • Choose a , it is generally mid element of the list.
  • Initialise two index variable , 剩下=0 and 对=arr.length-1
  • 递增左变量,直到元素高于枢轴。
  • 递减右变量,直到获得小于枢轴的元素
  • swap rr[left] and rr[right]
  • Recursively 分类 sublists(小于枢纽的子列表,大于枢轴的子列表)使用上述算法。
  • In the end , you will get 分类ed 数组.

快速排序实施

QuickSortMain.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 
组织.Arpit.爪哇2blog;
 
进口 爪哇.实用程序.数组;
 
上市 QuickSortMain {
 
    私人的 静态的 整型 数组[];
 
    上市 静态的 虚空 分类(整型[] rr) {
 
        如果 (rr == 空值 || rr.长度 == 0) {
            返回;
        }
        数组 = rr;
        quickSort(0, 数组.长度-1);
    }
 
    私人的 静态的 虚空 quickSort(整型 剩下, 整型 ) {
 
        整型 i = 剩下;
        整型 j = ;
        //找到枢纽号,我们将其作为中间
        整型 = 数组[剩下+(-剩下)/2];
 
         (i <= j) {
            / **
            *在每次迭代中,我们将向左递增,直到找到大于枢轴的元素
            *我们将一直递减直到找到小于枢轴的元素
             */
             (数组[i] < ) { i++; } (数组[j] > ) {
                j-;
            }
            如果 (i <= j) {
                交换(i, j);
                //将索引移到两侧的下一个位置
                i++;
                j-;
            }
        }
        //递归调用quickSort()方法
        如果 (剩下 < j)
            quickSort(剩下, j);
        如果 (i < )
            quickSort(i, );
    }
 
    私人的 静态的 虚空 交换(整型 i, 整型 j) {
        整型 温度 = 数组[i];
        数组[i] = 数组[j];
        数组[j] = 温度;
    }
 
    上市 静态的 虚空 主要( a[]){
        整型[] 输入 = {33,21,45,64,55,34,11,8,3,5,1};
        系统..打印(“排序之前:”);
        系统..打印(数组.toString(输入));
        分类(输入);
        系统..打印(“ == ================”);
        系统..打印(“排序后:”);
        系统..打印(数组.toString(数组));
 
    }
}
 

输出:

排序前:
[33、21、45、64、55、34、11、8、3、5、1]
== == ==============
排序后:
[1、3、5、8、11、21、33、34、45、55、64]

时间复杂度

最佳情况: O(n log n)
平均情况: O(n log n)
最糟糕的情况 : O(n^2)
要了解有关复杂性的更多信息,请仔细阅读 算法的复杂性.

 That’关于Java中快速排序的全部内容。

分享这个

作者

关注作者

相关文章

  • 11月04日

    爪哇中的拓扑排序

    在这篇文章中,我们将在图中看到有关拓扑排序的信息。拓扑排序是顶点或节点的排序,例如,如果(u,v)之间存在边,那么在拓扑排序中u应该先于v。拓扑排序仅适用于有向无环图(DAG)。如果图中有一个循环,则[…]

  • 8月23日

    用Java排序数组

    在本文中,我们将看到如何在Java中对数组进行排序。有多种在Java中对数组进行排序的方法。您可以实现不同的排序算法来对数组进行排序。您可以使用Arrays.sort方法对Java中的数组进行排序。 数组.sort方法有各种重载版本。你可以通过它[…]

  • 10月12日

    爪哇中的选择排序

    如果您想练习数据结构和算法程序,则可以阅读数据结构和算法面试程序。选择排序是一种就地比较排序算法。它实现起来非常简单,但是在大量输入时效果不佳。选择排序算法在列表中找到最小元素。 […]

  • 10月12日

    Shell在Java中排序

    Shell排序是基于比较的排序算法。是插入排序的概括。它是唐纳德·壳(Donald Shell)发明的。它允许对相距很远的元素进行排序。如果进行插入排序,则仅在相邻元素之间进行比较,而在外壳排序中进行比较,这样可以避免比较相邻元素直到最后一步。壳的最后一步[…]

  • 10月12日

    用Java计算排序

    计数排序是一种特殊的排序技术,用于在特定范围之间对元素进行排序。假设元素属于1到K的范围,那么可以使用Counting 分类来对元素进行O(N)次排序。计算排序以查找少于X的元素数的基本思想,因此X可以放在其[…]

  • 10月12日

    爪哇中的堆排序

    在本文中,我们将看到如何在Java中实现堆排序。我将堆排序分为多个部分,以使其更易于理解。什么是堆?堆是具有某些特殊属性的树,因此node的值应大于或等于(小于或等于[…]

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

订阅我们的新闻

获取质量教程到您的收件箱。现在订阅。


成为朋友

©2020 爪哇2博客