zoukankan      html  css  js  c++  java
  • java快速排序代码实现

    import java.util.Arrays;
    
    public class QuickSorted {
    
        /**
         * 快速排序方法1
         *
         * @param arr
         * @param low
         * @param high
         */
        public void quickSort1(int arr[], int low, int high) {
            int start = low;
            int end = high;
            int key = arr[low];
            //退出机制, end=start,key被换到中间
            while (end > start) {
                while (end > start && arr[end] >= key) {
                    end--;
                    if (arr[end] <= key) {
                        swap(arr, start, end);
                        break;
                    }
                }
                while (end > start && arr[start] <= key) {
                    start++;
                    if (arr[start] >= key) {
                        swap(arr, start, end);
                        break;
                    }
                }
            }
            // 此时第一次循环比较结束,关键值的位置已经确定了。
            // 左边的值都比关键值小,右边的值都比关键值大,但是两边的顺序还有可能是不一样的,进行下面的递归调用
            if (start > low)
                quickSort1(arr, low, start);// 左边序列。第一个索引位置到关键值索引
            if (end < high)
                quickSort1(arr, end + 1, high);// 右边序列。从关键值索引+1到最后一个
        }
    
    
        /**
         * 交换数组内两个元素
         */
        public void swap(int[] array, int i, int j) {
            int temp = array[i];
            array[i] = array[j];
            array[j] = temp;
        }
    
            // 测试
        public static void main(String[] args) {
            QuickSorted s = new QuickSorted();
            int[] arr = {11, 3, 29, 49, 30, 7, 50, 63, 46, 1, 99};
            System.out.println("未排序的数组:" + Arrays.toString(arr));
            s.quickSort1(arr, 0, arr.length - 1);
            System.out.println("排序后的数组:" + Arrays.toString(arr));
        }
    }

     参考资料:

    https://blog.csdn.net/qq_34801169/article/details/81412252 (链接内代码有bug,本文做了修改)

  • 相关阅读:
    Makefile 使用总结(转)
    linux,pthread(转)
    Java中this和super的用法总结
    「转」开发十年,只剩下这套Java开发体系了
    js的function立即执行函数
    什么是回调函数
    算法总结:双指针法的常见应用
    26. Remove Duplicates from Sorted Array
    1. Two Sum
    Spring的依赖注入和控制反转
  • 原文地址:https://www.cnblogs.com/but999/p/13526054.html
Copyright © 2011-2022 走看看