快速排序Java实现
2016-09-20 22:30
435 查看
这里有个问题需要说明,由于快排用到里递归调用,递归调用栈需要额外的空间,所以快排的空间复杂度不是O(1),而是O(log n)
public class Main { public static void main(String[] args) { int[] arr = {3,4,2,6,4,8,4}; quickSort(arr, 0, arr.length - 1); for(int i = 0; i < arr.length; i++){ System.out.println(arr[i]); } } public static void quickSort(int[] arr, int begin, int end){ if(arr == null || arr.length == 0 || begin >= end){ return; } int left = begin; int right = end; int target = arr[left]; while(left < right){ while(left < right && arr[right] >= target){ right--; } if(left < right){ arr[left] = arr[right]; left++; } while(left < right && arr[left] <= target){ left++; } if(left < right){ arr[right] = arr[left]; right--; } } arr[left] = target; int index = left; quickSort(arr, begin, index - 1); quickSort(arr, index + 1, end); } }
相关文章推荐
- Java静态修饰符static
- java重载和重写
- JAVA基础知识点梳理四:数组
- 传智播客35期JavaEE工程师从基础到实战视频
- JAX-RS规范的版本.实现.jar对应关系
- SpringBoot中实现拦截器, 并实现对404和500等错误的拦截。
- Eclipse快捷键的使用
- [LeetCode-Java]14. Longest Common Prefix
- java实现基于SGIP协议开发联通短信的方法
- JAVA基础(007_两个int型变量的数值交换)
- Bank项目
- java中堆区和栈区的理解
- Spring学习第八天:调用外部属性文件
- spring+mybatis 事务之如何在service层配置事务
- struts2国际化
- Java实现发邮件功能
- java基础之枚举
- (多态)Java向上转型之后调用子类的同名变量/方法的问题
- spring mvc 校验
- 银行家算法(Java实现)