介绍
这篇文章主要介绍了Java中快速排序的算法是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。
<强>快速排序的原理强>
快速排序是对冒泡排序的一种改进,冒泡排序是通过一个个比较,从而将小的值放在一端,而大的值放在另外一端,从而达到排序的目的。
而快速排序,是先选定一个临界值,将比这临界值小的值放在一端,而比临界值大的值放在另外一端。重复上一段方法,可以把已经通过临界值分成的两边,再进行两次的分放……将其数据排序好,则整个快速排序就完成了。
<强>快速排序的算法强>
<强>核心算法:强>
//快速排序 虽然(我& lt;j) { 而(num [j]比;tmp和,j比;我) ——j; 而(num[我]& lt;=tmp和,我& lt;j) { + +我; } 如果我& lt;j) { t=num[我]; num[我]=[j]; num [j]=t; } } num(左)=num[我]; num[我]=tmp;
<强>下面是完整的快排程序:强>
//QuickSort.java 公共类快速排序{ 公共静态void main (String [] args) { int [] num={10、9、8、7、6、5、4、3、2、1}; System.out.print (“Qriginal数组是:“); for (int i=0;我& lt;num.length;我+ +){ system . out。打印(num[我]+“;“); } System.out.println ();//快速排序 快速排序(num 0 9); System.out.print(“排序数组是:“); for (int i=0;我& lt;num.length;我+ +){ system . out。打印(num[我]+“;“); } System.out.println (); } 公共静态真空快速排序(int [] num, int, int) { 如果(左比;右) 返回; int tmp, i, j, t; tmp=num(左); 我=左; j=正确; 虽然(我& lt;j) { 而(num [j]比;tmp和,j比;我) ——j; 而(num[我]& lt;=tmp和,我& lt;j) { + +我; } 如果我& lt;j) { t=num[我]; num[我]=[j]; num [j]=t; } } num(左)=num[我]; num[我]=tmp; 快速排序(num,离开时,我- 1); 快速排序(num, i + 1); } }
程序输出如下图所示:
Qriginal数组是:10 9 8 7 6 5 4 3 2 1 排序数组是:1 2 3 4 5 6 7 8 9 10
快速排序效率相对其他排序方法较高,因此快速排序是现在最好的通用排序方法.QuickSort的时间复杂度为O (nlogn)。