排序算法之快速排序

6 篇文章 0 订阅

排序算法分类:

img

各种排序算法的复杂度:

img

快速排序:

思想:先选定一个基准元素,然后将数组其他元素中比他小的元素都放在它的左边,比它大的元素都放到它的右边,然后左侧和右侧可以再次进行分别排序,分别各自再次选定一个基准元素,再次进行上述排序操作,直至所有元素都有序。

import java.util.Arrays;

public class Testquicksort {
    public static void quickSort(int left,int right,int []arr){
        if(left>right){//当左侧边界大于右侧边界时无需排序
            return;
        }
        int temp;
        int posnumber = arr[left];//选定一个基准元素
        int l = left;
        int r = right;
        while(l<r){
            while (arr[r]>= posnumber&&l<r){//右侧元素从右侧边界开始找,索引递减,直至找到一个比基准元素小的值。
            //***注意  当选定基准元素为最左侧元素时,需从右侧开始找。***
                r--;
            }
            while (arr[l]<= posnumber&&l<r){//左侧元素从左侧边界开始找,索引递增,直至找到一个比基准元素大的值。
                l++;
            }


           if(l<r){//交换两个元素的值使其满足左侧比基准值小,右侧比基准值大的规则。
               temp = arr[r];
               arr[r] = arr[l];
               arr[l]=temp;
           }

        }//循环结束后,l和r两个索引重合的位置,就是当前基准元素应该处于的位置。
        arr[left]=arr[l];//将基准元素值与该位置的值交换。
        arr[l]= posnumber;
            quickSort(left,r-1,arr);//递归排序左部
            quickSort(r+1,right,arr);//递归排序右部

    }

    public static void main(String[] args) {
        int arr[]={-122,-1,56,7,85,66,-9,45,45,1099,3,4};
        quickSort(0, arr.length-1, arr);
        System.out.println(Arrays.toString(arr));
    }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值