zoukankan      html  css  js  c++  java
  • 快速排序算法-java

    快速排序算法通过多次比较和交换来实现排序,其排序流程如下:

    1.首先设定一个分界值,通过该分界值将数组分成左右两部分。

    2.将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于或等于分界值,而右边部分中各元素都大于或等于分界值。

    3.然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。

    4.重复上述过程,可以看出,这是一个递归定义。通过递归将左侧部分排好序后,再递归排好右侧部分的顺序。当左、右两个部分各数据排序完成后,整个数组的排序也就完成了。

    import org.junit.Test;
    
    public class QuickSort {
        public void quick_sort(int[] array, int leftIndex, int rightIndex) {
            if (leftIndex >= rightIndex) {
                return;
            }
            if (leftIndex < rightIndex) {
                int left = leftIndex;
                int right = rightIndex;
                int x = array[left];
                while (left < right) {
                    while ((left < right) && (array[right] >= x)) {
                        right--;
                    }
                    if (left < right) {
                        array[left] = array[right];
                    }
                    while ((left < right) && (array[left] <= x)) {
                        left++;
                    }
                    if(left<right){
                        array[right] = array[left];
                    }
                }
                array[left] = x;
                quick_sort(array, leftIndex, left - 1);
                quick_sort(array, left + 1, rightIndex);
            }
        }
    
        @Test
        public void fun1() {
            int[] a = {7, 10, 5, 3, 6, 8, 4, 9, 1, 2};
            System.out.println("快速排序前的数组为:");
            for (int b : a) {
                System.out.print(b + " ");
            }
            System.out.println("");
            quick_sort(a, 0, a.length - 1);
            System.out.println("快速排序后的数组为:");
            for (int b : a) {
                System.out.print(b + " ");
            }
        }
    }

    详细排序算法原理介绍参考:https://www.cnblogs.com/skywang12345/p/3596746.html

  • 相关阅读:
    单表查询
    解读python中SocketServer源码
    C++实训(2.3)
    C++实训(2.2)
    C++实训(2.1)
    C++实训(1.3)
    C++实训(1.1)
    顺序表的实现,在vs2019上运行成功
    p243_5(3)
    自考新教材-p176_5(2)
  • 原文地址:https://www.cnblogs.com/KevinFeng/p/14987189.html
Copyright © 2011-2022 走看看