快速排序的最坏运行情况是 O(n?),比如说顺序数列的快排 。但它的平摊期望时间是 O(nlogn) , 且 O(nlogn) 记号中隐含的常数因子很小,比复杂度稳定等于 O(nlogn) 的归并排序要小很多 。所以 , 对绝大多数顺序性较弱的随机数列而言,快速排序总是优于归并排序 。
1. 算法步骤
从数列中挑出一个元素,称为 "基准"(pivot);
重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边) 。在这个分区退出之后,该基准就处于数列的中间位置 。这个称为分区(partition)操作;
递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序;
2. 动图演示
代码实现JavaScript实例functionquickSort ( arr ,left ,right ){
varlen=arr. length,
partitionIndex ,
left=typeofleft!='number'?0:left ,
right=typeofright!='number'?len-1:right ;
if( left
java中排序算法代码package temp;
import sun.misc.Sort;
/**
* @author zengjl
* @version 1.0
* @since 2007-08-22
* @Des java几种基本排序方法
*/
/**
* SortUtil:排序方法
* 关于对排序方法的选择:这告诉我们,什么时候用什么排序最好 。当人们渴望先知道排在前面的是谁时,
* 我们用选择排序;当我们不断拿到新的数并想保持已有的数始终有序时,我们用插入排序;当给出的数
* 列已经比较有序 , 只需要小幅度的调整一下时,我们用冒泡排序 。
*/
public class SortUtil extends Sort {
/**
* 插入排序法
* @param data
* @Des 插入排序(Insertion Sort)是,每次从数列中取一个还没有取出过的数,并按照大小关系插入到已经取出的数中使得已经取出的数仍然有序 。
*/
public int[] insertSort(int[] data) {
1/11页
int temp;
for (int i = 1; idata.length; i++) {
for (int j = i; (j0)(data[j]data[j - 1]); j--) {
swap(data, j, j - 1);
}
}
return data;
}
/**
* 冒泡排序法
* @param data
* @return
* @Des 冒泡排序(Bubble Sort)分为若干趟进行,每一趟排序从前往后比较每两个相邻的元素的大?。ㄒ虼艘惶伺判蛞冉蟦-1对位置相邻的数)并在
* 每次发现前面的那个数比紧接它后的数大时交换位置;进行足够多趟直到某一趟跑完后发现这一趟没有进行任何交换操作(最坏情况下要跑n-1趟,
* 这种情况在最小的数位于给定数列的最后面时发生) 。事实上,在第一趟冒泡结束后,最后面那个数肯定是最大的了,于是第二次只需要对前面n-1
* 个数排序 , 这又将把这n-1个数中最小的数放到整个数列的倒数第二个位置 。这样下去,冒泡排序第i趟结束后后面i个数都已经到位了 , 第i+1趟实
* 际上只考虑前n-i个数(需要的比较次数比前面所说的n-1要?。?。这相当于用数学归纳法证明了冒泡排序的正确性
【java排序的代码 java排序代码集合】关于java排序的代码和java排序代码集合的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 专门给工厂用的erp管理系统贵不贵,专门给工厂用的erp管理系统贵不贵呀
- 电脑怎么判断固态硬盘坏了,如何确定电脑固态坏了
- 手机掉网怎么连接路由器,手机掉网怎么连接路由器教程
- 网络测试毕业设计,网络测试与分析
- linux进网址命令 linux 命令打开网页
- 视频号分类怎么选的呀,视频号分几种
- 移动电信双线的服务器,移动电信双线如何利用
- 免费推广是如何付费的呀,免费推广是如何付费的呀视频
- go语言做TODO项目 go语言编程之旅一起用go做项目