栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

快速排序---java

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

快速排序---java

目录

思路

gitee地址:

代码 


思路
  1. 找到数组中间的节点pivot
  2. 从左边找比pivot大的数与其右边比pivot小的数交换
  3. 然后pivot左边的数字在进行快速排序,右边也进行快速排序,最后就可以了。 

gitee地址:

快排https://gitee.com/ALi_L/javaDataStructurs.git

代码 
package DataStructures.sort;

import java.lang.reflect.Array;
import java.util.Arrays;


public class quickSort {
    public static void main(String[] args) {
//        int[] array = {1, 2, 3, 5, 4, -1};
        int[] array = {-9, 78, 0, 23, -567, 70};
        quick(array, 0, array.length - 1);
        System.out.println(Arrays.toString(array));
    }

    
    public static void quick(int[] array, int left, int right) {
        //中间的数
        int pivot = array[(right + left) / 2];
        int temp = 0;
        //left和right是数组的边界,用来保证指针l,r不能越界
        int l = left;
        int r = right;

        while (l < r) {
            //找到最左边比pivot大的数
            while (array[l] < pivot) {
                l++;
            }
            //找到最右边比pivot小的数
            while (array[r] > pivot) {
                r--;
            }
            //如果左指针超过了右指针则不用交换,直接退出循环
            if (l >= r) {
                break;
            }
            //找到后交换两数的大小,但是前提是左指针要小于右指针
            temp = array[l];
            array[l] = array[r];
            array[r] = temp;

            //如果一个指针到达了中间pivot的位置,则移动另一个指针,此时该指针指向pivot
            if (array[l] == pivot) {
                r--;
            }
            //当右指针到达中间pivot的位置时,移动左指针,此时该指针指向pivot
            if (array[r] == pivot) {
                l++;
            }

        }

        //当排序一次后,两个指针相等时说明两个指针都指向pivot。
        // 此时让左指针++,右指针--;[0,r]与[l,right]是除了pivot的两组
        if (l == r) {
            l++;
            r--;
        }
        //
        if (left < r) {
            quick(array, left, r);
        }
        if (l < right) {
            quick(array, l, right);
        }


    }

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/462940.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号