黑马程序员技术交流社区

标题: 求大牛看看快速排序有没有问题 [打印本页]

作者: 绝版坏银    时间: 2015-5-19 11:03
标题: 求大牛看看快速排序有没有问题
package com.itheima;

public class QuickSort {
        public static void main(String[] args) {
                // 定义数组
                int[] arr = { 49, 11, 34, 23, 44, 54, 66, 4, 21, 75 };
                // 创建对象
                QuickSort qs = new QuickSort();
                // 调用快速排序方法
                quickSort(arr, 0, arr.length - 1);
                // 遍历
                qs.print(arr);
        }

        public static void quickSort(int[] arr, int low, int high) {
                int i = low;
                int j = high;

                // 基准元素
                int key = arr[low];

                while (true) {
                        // high往前走(与基准元素比,比基准元素小就交换)
                        while (j > i) {
                                if (arr[j] < key) {
                                        // 交换
                                        int temp = arr[j];
                                        arr[j] = arr[i];
                                        arr[i] = temp;
                                        break;
                                } else {
                                        j--;
                                }
                        }

                        // i往后走
                        while (j > i) {
                                if (arr[i] > key) {
                                        // 交换
                                        int temp = arr[j];
                                        arr[j] = arr[i];
                                        arr[i] = temp;
                                        break;
                                } else {
                                        i++;
                                }
                        }

                        if (i == j) {
                                break;
                        }

                        // 终止条件
                        if (i > j) {
                                return;
                        }

                        // 基准左边元素
                        quickSort(arr, low, i - 1);
                        // 基准右边元素
                        quickSort(arr, i + 1, high);
                }
        }

        public void print(int[] arr) {
                for (int i = 0; i < arr.length; i++) {
                        if (i == arr.length - 1) {
                                System.out.print(arr[i]);
                        } else {
                                System.out.print(arr[i] + ",");
                        }
                }
        }
}
作者: L番茄X    时间: 2015-5-19 16:13
有一个叫自然排序应该可以用到这里来的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2