排序算法之快速排序
来源:互联网 发布:ubuntu传文件 编辑:程序博客网 时间:2024/06/15 19:24
package com.lin.sort;/** * @author 作者 林尤庆 * @version 创建时间:2016-8-12 下午02:42:05 * 类说明 :快速排序法(Quick Sort) * * 快速排序的最坏时间复杂度为O(n^2). * 快速排序所占用的辅助空间为递归时所需栈的深度,故空间复杂度为O(log2(n))。同时,快速排序是不稳定的排序。 */public class QuickSort { public void swap(int a[],int i,int j){ int temp=a[i]; a[i]=a[j]; a[j]=temp; } public int partSort(int a[],int low,int high){ int pivot,p_pos,i; p_pos=low; pivot=a[p_pos]; for(i=low+1;i<=high;i++){ if(a[i]>pivot){ p_pos++; swap(a, p_pos, i); } } swap(a, low, p_pos); return p_pos; } public void quicksort(int a[],int low,int high){ int pivot; if(low<high){ pivot=partSort(a, low, high); quicksort(a, low, pivot-1); quicksort(a, pivot+1, high); } } public static void main(String[] args) { // 快速排序法(Quick Sort) int vec[] = new int[] { 37, 46, 33, -5, 17, 51 }; QuickSort s = new QuickSort(); long begin = System.currentTimeMillis(); for (int k = 0; k < vec.length; k++) { s.quicksort(vec, 0, vec.length-1); } long end = System.currentTimeMillis(); System.out.println("快速法用时为:" + (end - begin)); // 打印排序好的结果 for (int i = 0; i < vec.length; i++) { System.out.print(vec[i]+" "); } }}
测试结果:
快速法用时为:051 46 37 33 17 -5
阅读全文
0 0
- 排序算法之快速排序
- 排序算法之快速排序
- 排序算法之快速排序
- 排序算法 之 快速排序
- 排序算法之快速排序
- 排序算法之快速排序
- 排序算法之快速排序
- 排序算法之快速排序
- 排序算法之快速排序
- 排序算法之快速排序
- 排序算法之快速排序
- 排序算法之快速排序
- 排序算法之快速排序
- 排序算法之快速排序
- 排序算法之快速排序
- 排序算法之快速排序
- 排序算法之快速排序
- 排序算法之快速排序
- Windows系统使用WMIC的获取硬盘ID的问题
- [LeetCode] 560. Subarray Sum Equals K
- Spring mail
- codeforces 837E
- java后台中的框架概念之间的关系
- 排序算法之快速排序
- js实现鼠标悬停文字上显示图片
- hdfs的shell操作
- LintCode:字符串置换211
- RC522读M1卡原理图及调试
- jQuery 中lable radio select 的一些操作
- Date,DateTime,String等日期格式的相互转化
- 如何转载文章
- Java Spring搭配TestNG测试配置