问题描述
  用递归来实现快速排序(quick sort)算法。快速排序算法的基本思路是:假设要对一个数组a进行排序,且a[0] = x。首先对数组中的元素进行调整,使x放在正确的位置上。同时,所有比x小的数都位于它的左边,所有比x大的数都位于它的右边。然后对于左、右两段区域,递归地调用快速排序算法来进行排序。
  输入格式:输入只有一行,包括若干个整数(不超过10个),以0结尾。
  输出格式:输出只有一行,即排序以后的结果(不包括末尾的0)。
输入输出样例
样例输入
5 2 6 1 7 3 4 0
样例输出
1 2 3 4 5 6 7
 
 
 import java.util.*;

 public class Main {

 //    static void swap(int a, int b) {                //交换的另外一种方式
// a = a ^ b;
// b = a ^ b;
// a = a ^ b;
// } static void quicksort(int[] a, int i, int j) {
if(i >= j)return;
int x = 0;
int temp = a[i];
int low = i;
int high = j; while(low < high) {
while(a[high] >= temp && low < high) high--;
while(a[low] <= temp && low < high) low++;
if(low < high) {
x = a[low];
a[low] = a[high];
a[high] = x;
}
}
a[i] = a[high];
a[high] = temp; quicksort(a, i, high-1);
quicksort(a, high+1, j);
} public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int[] c = new int[11];
int sign = 1;
int index = 0;
while(true) {
sign = sc.nextInt();
if(sign == 0) break;
c[index++] = sign;
}
int[] b = new int[index];
b = Arrays.copyOfRange(c, 0, index); quicksort(b, 0, b.length-1);
for(int i = 0; i < b.length; i++)
System.out.print(b[i] + " ");
}
}

重新认识了一些细节,仅记录。

ADV-297 快速排序 java的更多相关文章

  1. 快速排序 Java实现的快速排序

    快速排序  Java实现的快速排序: package xc; import java.util.Arrays; import java.util.Random; /** * * @author dax ...

  2. 基本排序算法——快速排序java实现

    简单的快速排序算法,我竟然花费了如此多的时间来写作,好好学习. /** * */ package basic.sort; import java.util.Arrays; import java.ut ...

  3. 排序算法----快速排序java

    快速排序是对冒泡排序的一种改进,平均时间复杂度是O(nlogn) import java.util.Arrays; import java.util.Scanner; public class tes ...

  4. 快速排序 java详解

    1.快速排序简介: 快速排序由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此 ...

  5. 快速排序-java

    排序-快速排序 基本思想: 将数据划分为两部分,左边的所有元素都小于右边的所有元素:然后,对左右两边进行快速排序. 划分方法: 选定一个参考点(中间元素),所有元素与之相比较,小的放左边,大的放右边. ...

  6. 数组排序-冒泡排序-选择排序-插入排序-希尔排序-快速排序-Java实现

    这五种排序算法难度依次增加. 冒泡排序: 第一次将数组相邻两个元素依次比较,然后将大的元素往后移,像冒泡一样,最终最大的元素被移到数组的最末尾. 第二次将数组的前n-1个元素取出,然后相邻两个元素依次 ...

  7. 排序算法之快速排序(java实现)

    package com.javaTest300; public class Test039 { public static void main(String[] args) {// 快速排序 int ...

  8. 快速排序java

    快速排序(Quicksort)是对冒泡排序的一种改进.它是先在数组中找到一个关键数,第一趟排序将比关键数小的放在它的左边,比关键数大的放在它的右边.当第一趟排序结束后,再依次递归将左边和右边的进行排序 ...

  9. 快速排序Java实现

    package practice; import edu.princeton.cs.algs4.*; public class TestMain { public static void main(S ...

随机推荐

  1. 5_7 丑数(UVa136)<priority_queue的使用>

    Ugly Number的定义为:该数之质因数必须为2,3或5,当然了,依照惯例,1也算是Ugly Number.在此列举一串数列:1,2,3,4,5,6,8,9,10,12,15这些就是前11个Ugl ...

  2. Ubuntu 17.04 apt-get 获取失败

    最近电脑上的ubuntu apt-get 命令出现了异常,百度好久终于解决. 问题:sudo apt-get update命令执行  全部忽略或者是错误       一些文件也无法安装 解决办法:刚开 ...

  3. 安卓开发:初步了解布局文件layout

    了解完项目的目录结构,主要文件的作用之后. 了解完各常量文件的定义和使用之后,接下来的重头戏肯定是布局文件layout. 果然,网上关于“安卓布局文件layout”的各种介绍.解析.深入分析,等等资料 ...

  4. javascript的阻止默认事件和阻止冒泡事件

    这两个方面的知识,在妙味课堂中有听过,再次复习一下: 原文来自:[http://www.cnblogs.com/Essence/p/4266618.html] 事件冒泡与默认行为   在说事件冒泡之前 ...

  5. 引入C/C++动态库

    [DllImport("SocketAPI.dll", CharSet = CharSet.Ansi, ExactSpelling = true, SetLastError = t ...

  6. ISR high memory参数

    1.通过 show process memory 获取的数据参数解释: 来自 <http://blog.router-switch.com/2013/12/show-processes-memo ...

  7. video兼容ie,ckplayer网页播放器

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. ES查询不重复的数据

    GET ana-apk/_search #查询不重复的mac地址{  "size": 10,  "aggs": {    "MAC": {  ...

  9. 【JavaWeb】JSP常用内置对象

    session //a页面 <% request.getSession().setAttribute("key","session");%> < ...

  10. Django 学习之Rest Framework 视图相关

    drf除了在数据序列化部分简写代码以外,还在视图中提供了简写操作.所以在django原有的django.views.View类基础上,drf封装了多个子类出来提供给我们使用. Django REST ...