• 快速排序 算法 Java 实现


    我的快速排序 算法 Java实现。

    View Code
     1 /*
     2  * 目的:实现 快速排序 算法
     3  * 功能:对一组数据进行排序
     4  * 作者:陈沛锐
     5  * 时间:2013.04.04
     6  * 
     7  * 经验积累:
     8  * 1.递归函数中提前写好if()语句,防止漏写;
     9  */
    10 package part02.chapter07;
    11 
    12 import java.text.SimpleDateFormat;
    13 import java.util.Date;
    14 import java.util.Random;
    15 import java.util.Scanner;
    16 
    17 public class _1exercise {
    18 
    19     public static void main(String[] args) {
    20         System.out.println("请输入您要产生的数据量(整数表示):");
    21         Scanner myScanner = new Scanner(System.in);
    22         int array_length = myScanner.nextInt();
    23         int[] A = new int[array_length];
    24         System.out.println("请输入数据中的最大值(整数表示):");
    25         int array_max = myScanner.nextInt();
    26         System.out.println("请输入数据中的最小值(整数表示):");
    27         int array_min = myScanner.nextInt();
    28         Random ran = new Random();
    29         System.out.println("随机产生的数据如下:");
    30         for (int i = 0; i < array_length; i++) {
    31             A[i] = ran.nextInt(array_max - array_min + 1) + array_min;
    32             System.out.print(A[i] + " ");
    33         }
    34         System.out.println();
    35         SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
    36         System.out.println(sdf.format(new Date()));
    37         QUICKSORT quickSort = new QUICKSORT();
    38         quickSort.sort(A, 0, array_length - 1);
    39         System.out.println(sdf.format(new Date()));
    40         System.out.println();
    41         System.out.println("通过快速排序后的数据如下:");
    42         for (int i = 0; i < array_length; i++) {
    43             System.out.print(A[i] + " ");
    44         }
    45     }
    46 
    47 }
    48 
    49 // 快速排序
    50 class QUICKSORT {
    51     public void sort(int[] A, int p, int r) {
    52         if (p < r) {// 注意递归条件的判断
    53             int j = partition(A, p, r);
    54             sort(A, p, j - 1);
    55             sort(A, j + 1, r);
    56         }
    57     }
    58 
    59     public int partition(int[] A, int p, int r) {
    60         int i = p - 1;
    61         // 为了防止在for语句中每次都取出A[r]的值
    62         int x = A[r];
    63         int temp = 0;
    64         for (int j = p; j < r; j++) {
    65             if (A[j] < x) {
    66                 i++;
    67                 temp = A[i];
    68                 A[i] = A[j];
    69                 A[j] = temp;
    70             }
    71         }
    72         // 将i+1下标的值与A[j]进行交换
    73         A[r] = A[i + 1];
    74         A[i + 1] = x;
    75         return i + 1;
    76     }
    77 }
    78 /**
    79  * a sample output:
    80  * 请输入您要产生的数据量(整数表示):
    81 10
    82 请输入数据中的最大值(整数表示):
    83 20
    84 请输入数据中的最小值(整数表示):
    85 1
    86 随机产生的数据如下:
    87 4 11 3 13 15 7 3 13 3 16 
    88 通过快速排序后的数据如下:
    89 3 3 3 4 7 11 13 13 15 16 
    90 */
    欢迎转载,欢迎批评指正! 转载请注明: 转自博客园,转载地址:http://www.cnblogs.com/igeneral/
  • 相关阅读:
    1scala基础
    3scala高级
    03spark kafka
    01spark基础
    04spark streaming
    2scala集合
    02spark sql
    学习java程序设计环境的心得
    第五章继承
    第二周学习Java心得
  • 原文地址:https://www.cnblogs.com/igeneral/p/3069989.html
Copyright © 2020-2023  润新知