快速排序(JAVA)
2016-05-16 09:20
423 查看
我所写的快速排序的核心思想就是:对于一个整形数组,先找到它中间的元素,随后从数组的左侧逐一寻找大于中间元素的元素,同时从数组的右侧逐一寻找小于中间元素的元素,若两边都找到了,就交换者两个元素,之后就是一直递归就行了,递归的过程体现了二分的思想。
下面是我写的快速排序(Java版):
下面是我写的快速排序(Java版):
import java.util.Scanner; public class Main { public static void Quicksort(int[] a, int Left, int Right) { int left, right, temp, middle; middle = a[(Left + Right) / 2]; left = Left; right = Right; do { // 从左边寻找大于中间值的下标 while (left < Right && a[left] < middle) { left++; } // 从右边寻找小于中间值的下标 while (right > Left && a[right] > middle) { right--; } // 找到一对,对换他们 // 注意:如果少了等于号,会长生死循环 if (left <= right) { temp = a[left]; a[left] = a[right]; a[right] = temp; left++; right--; } } while (right >= left); // 直到左右对换 if (Left < right) { Quicksort(a, Left, right); } if (Right > left) { Quicksort(a, left, Right); } } public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int[] p = new int ; for (int i = 0; i < n; i++) { p[i] = in.nextInt(); } Quicksort(p, 0, p.length - 1); for (int i = 0; i < p.length; i++) { System.out.print(p[i] + " "); } } }
相关文章推荐
- springmvc 中dao层和service层的区别
- 记录优化 Eclipse||MyEclipse ini配置
- Spring 处理器拦截器
- [转] eclipse SVN中文件修改后图标不变黑星解决
- 计数排序(JAVA)
- Java反射机制Class类用法
- Struts2中使用Session的两种方法
- PAT-Java-1023. 组个最小数 (20)
- SpringMVC源代码学习(五)九大组件下
- 给Java新手的一些建议----Java知识点归纳(Java基础部分)
- 彻底理解JAVA动态代理
- Java8 随笔记录(四)
- Java设计模式(十) 你真的用对单例模式了吗?
- Java多线程编程核心技术---对象及变量的并发访问(一)
- PAT-Java-1019. 数字黑洞 (20)
- spring+mybatis+Atomikos JTA事务配置说明
- spring+mybatis+Atomikos JTA事务配置说明
- Spring学习(一)---IoC介绍
- Thinking in java并发
- PAT-Java-1017. A除以B (20)