快排
来源:互联网 发布:拼豆转图软件安卓 编辑:程序博客网 时间:2024/04/30 04:07
快排就是先找一个数为基准,把所有比这个数大的放在基准的右边,比这个数小的放在左边,这样基准的位置定下了;然后再对基准两边的数进行相同的操作
hdu 1040 As Easy As A+B
import java.io.BufferedInputStream;import java.util.Scanner;import static java.lang.System.out;public class Main {private Scanner sc = new Scanner(new BufferedInputStream(System.in));private int[] a;public void init() {int nCase = sc.nextInt();while (nCase-- > 0) {int n = sc.nextInt();a = new int[n];for (int i = 0; i < n; i++)a[i] = sc.nextInt();quickSort(0, a.length - 1);for (int i = 0; i < n-1; i++)out.printf("%d ", a[i]);out.println(a[n-1]);}}private void quickSort(int left, int right) {if (left < right) {int j = partition(left, right);quickSort(left, j - 1);quickSort(j + 1, right);}}private int partition(int first, int end) {int p = a[first], i = first, j = end;//以第一个数为基准 pwhile (i < j) {// 从右向左找while (i < j && a[j] > p) j--;if (i < j) {a[i] = a[j];i++;}// 从左向右找while (i < j && a[i] < p) i++;if (i < j) {a[j] = a[i];j--;}//以上两个过程实质就是交换比p大和比p小的两个元素位置 }a[i] = p;//最终i、j的位置的就是基准的位置return i;//返回基准的位置}public static void main(String[] args) {new Main().init();}}
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排。
- 使用WPF动态生成Code 39条形码
- 日志切换频繁解决案例
- 爱加密为APP开发者构筑安全成功的道路
- android_OpenGL
- error MSB8020: The builds tools for Visual Studio 2010 (Platform Toolset = ‘v100′) cannot be found.
- 快排
- 数学常数e的含义
- 内核启动全过程
- Spark-0.8新增Fair Scheduler资源调度
- 通过判断优先级计算包含[0-9],加减乘除和括号的的字符串
- Ubuntu 上git 服务的搭建记录
- SQL中 and or优先级问题(转)
- oracle exp imp 导入 正在跳过表 plsql 导入表 成功终止 数据 被导入
- 【discuzx2】home_space.htm模板文件解析