java 实现快速排序法
2016-01-15 17:43
495 查看
列表内容
快速排序定义:
通过一趟排序将要排序的数据通过一个基准数分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
package base;
/**
*
* @Title: QuickSortTest.java
* @Package base
* @Description: 快速排序法
* @author lisq
* @date 2016年1月15日 下午4:58:23
* @version V1.0
*/
public class QuickSortTest {
}
快速排序定义:
通过一趟排序将要排序的数据通过一个基准数分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
package base;
/**
*
* @Title: QuickSortTest.java
* @Package base
* @Description: 快速排序法
* @author lisq
* @date 2016年1月15日 下午4:58:23
* @version V1.0
*/
public class QuickSortTest {
/** * 挖坑填数 * 默认基准数 key = data[i] ,一般情况都为首元素 * partition方法 实现 data[左边的数据 ]< key < data[右边的数据] */ public static int partition(int data[], int i, int j) { int key = data[i]; //基准数 (挖坑1) while (i < j) { //先从右往左找,如果数据大于key , j-- ; while (i < j && data[j] > key) { j--; } //元素小于或者等于key if (i < j) { data[i] = data[j]; //填坑1 (挖坑2) i++; //下次挖坑要跳过此位置 } //然后从左往右找,如果数据小于key , i++ ; while (i < j && data[i] < key) { i++; } //元素大于或者等于key if (i < j) { data[j] = data[i]; //填坑2 (挖坑3) j--; //下次挖坑要跳过此位置 } //然后继续挖坑 , 当i == j 退出 } data[i] = key; System.out.println("key["+key+"] 下标:" + i); print(data); return i; } /** * 分治法 */ public static void quickSort(int data[], int i, int j) { if (i < j) { int key = partition(data, i, j); quickSort(data, i, key - 1); quickSort(data, key + 1, j); } } /** * 测试 */ public static void main(String[] args) { int data[] = { 10, 7, 5, 9, 2, 8, 22, 2431, 11, 23, 10, 3, 4, 222,2431 }; quickSort(data, 0, data.length - 1); print(data); } /** * 数组打印 */ static void print(int data[]) { System.out.println("============================"); for (int c : data) { System.out.print(c + "\t"); } System.out.println(); System.out.println("============================"); }
}
相关文章推荐
- Java 抽象类
- java集合:二叉树
- 初识Java
- AndroidNDK初步开发之安装eclipse插件支持jni开发(一)
- Spring分布式事务- 三种实现方式(Spring+JTA)
- 蓝桥杯-入门训练-Fibonacci数列
- jsp,js引用Java常量
- hdu 2103 java 细节题
- Eclipse闪退无法打开的解决方法
- 蓝桥杯-入门训练-求圆的面积
- 第十一章】 SSH集成开发积分商城 之 11.3 实现积分商城层 ——跟我学spring3
- Java基础-学习笔记(四)
- 破解myeclipse6.5
- spring事务管理几种方式(转)
- 使用XStream实现xml与JavaBean之间的转换
- @Component-@Resource-@Repository-@Service-@Controller的区别和理解-------springMVC
- 蓝桥杯-入门训练-序列求和
- Spring的事务管理
- springIOC及Bean容器(2)
- spring概述(1)