快速排序算法演示 : 排序搜索 « 集合数据结构 « Java

En
Java
1. 图形用户界面
2. 三维图形动画
3. 高级图形
4. 蚂蚁编译
5. Apache类库
6. 统计图
7. 
8. 集合数据结构
9. 数据类型
10. 数据库JDBC
11. 设计模式
12. 开发相关类
13. EJB3
14. 电子邮件
15. 事件
16. 文件输入输出
17. 游戏
18. 泛型
19. GWT
20. Hibernate
21. 本地化
22. J2EE平台
23. 基于J2ME
24. JDK-6
25. JNDI的LDAP
26. JPA
27. JSP技术
28. JSTL
29. 语言基础知识
30. 网络协议
31. PDF格式RTF格式
32. 映射
33. 常规表达式
34. 脚本
35. 安全
36. Servlets
37. Spring
38. Swing组件
39. 图形用户界面
40. SWT-JFace-Eclipse
41. 线程
42. 应用程序
43. Velocity
44. Web服务SOA
45. 可扩展标记语言
Java 教程
Java » 集合数据结构 » 排序搜索屏幕截图 
快速排序算法演示
快速排序算法演示
  
/*
 * The remainder of this file is borrowed from: @(#)QSortAlgorithm.java 1.3 29
 * Feb 1996 James Gosling
 
 * Copyright (c) 1994-1996 Sun Microsystems, Inc. All Rights Reserved.
 
 * Permission to use, copy, modify, and distribute this software and its
 * documentation for NON-COMMERCIAL or COMMERCIAL purposes and without fee is
 * hereby granted. Please refer to the file
 * http://www.javasoft.com/copy_trademarks.html for further important copyright
 * and trademark information and to http://www.javasoft.com/licensing.html for
 * further important licensing information for the Java (tm) Technology.
 
 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
 * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
 * NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY
 * LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
 * DERIVATIVES.
 
 * THIS SOFTWARE IS NOT DESIGNED OR INTENDED FOR USE OR RESALE AS ON-LINE
 * CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE PERFORMANCE,
 * SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR
 * COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE SUPPORT MACHINES, OR
 * WEAPONS SYSTEMS, IN WHICH THE FAILURE OF THE SOFTWARE COULD LEAD DIRECTLY TO
 * DEATH, PERSONAL INJURY, OR SEVERE PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH
 * RISK ACTIVITIES"). SUN SPECIFICALLY DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY
 * OF FITNESS FOR HIGH RISK ACTIVITIES.
 */

/**
 * A quick sort demonstration algorithm SortAlgorithm.java
 
 @author James Gosling
 @author Kevin A. Smith
 @version @(#)QSortAlgorithm.java 1.3, 29 Feb 1996
 */

/**
 * This is a generic version of C.A.R Hoare's Quick Sort algorithm. This will
 * handle arrays that are already sorted, and arrays with duplicate keys. <BR>
 
 * If you think of a one dimensional array as going from the lowest index on the
 * left to the highest index on the right then the parameters to this function
 * are lowest index or left and highest index or right. The first time you call
 * this function it will be with the parameters 0, a.length - 1.
 
 @param a
 *            a string array
 @param lo0
 *            left boundary of array partition
 @param hi0
 *            right boundary of array partition
 */
public class Sort {
  void QuickSort(String a[]int lo0, int hi0) {
    int lo = lo0;
    int hi = hi0;
    String mid;

    if (hi0 > lo0) {

      /*
       * Arbitrarily establishing partition element as the midpoint of the
       * array.
       */
      mid = a[(lo0 + hi02];

      // loop through the array until indices cross
      while (lo <= hi) {
        /*
         * find the first element that is greater than or equal to the
         * partition element starting from the left Index.
         */
        while ((lo < hi0&& (a[lo].compareTo(mid0))
          ++lo;

        /*
         * find an element that is smaller than or equal to the
         * partition element starting from the right Index.
         */
        while ((hi > lo0&& (a[hi].compareTo(mid0))
          --hi;

        // if the indexes have not crossed, swap
        if (lo <= hi) {
          String t = a[hi];
          a[hi= a[lo];
          a[lo= t;

          ++lo;
          --hi;
        }
      }

      /*
       * If the right index has not reached the left side of array must
       * now sort the left partition.
       */
      if (lo0 < hi)
        QuickSort(a, lo0, hi);

      /*
       * If the left index has not reached the right side of array must
       * now sort the right partition.
       */
      if (lo < hi0)
        QuickSort(a, lo, hi0);

    }
  }
}




           
         
    
  
Related examples in the same category
1. 动画的快速排序
2. Quick Sort Implementation with median-of-three partitioning and cutoff for small arrays
3. 简单排序演示简单排序演示
4. 一个简单的程序表现出排序算法
5. 排序字符串数组排序字符串数组
6. 简单版本的快速排序简单版本的快速排序
7. Combine Quick Sort Insertion SortCombine Quick Sort Insertion Sort
8. 快速排序中位数的三个分区快速排序中位数的三个分区
9. 选择排序选择排序
10. 插入排序插入排序
11. 插入排序插入排序
12. 冒泡排序冒泡排序
13. 归并排序归并排序
14. 二进制搜索二进制搜索
15. 壳牌排序壳牌排序
16. Recursive Binary Search Implementation in Java
17. 拓扑排序拓扑排序
18. 堆排序堆排序
19. 排序号码排序号码
20. 二进制搜索Java的字节数组实例
21. 二进制搜索Java的字符数组实例
22. 二进制搜索Java的双精度数组
23. 二进制搜索Java的浮点数组
24. 二进制搜索Java的整型数组
25. 二进制搜索Java的长整型数组
26. Performing Binary Search on Java short Array
27. 对象排序数组
28. 排序的数组对象
29. 排序字符串数组
30. 字符串数组排序与整理
31. 自定义排序测试
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.