JAVA算法之快速排序

快速排序,简而言之就是不断的切割在排序,找个基数,不断的与原数列进行对比,比之大的放在后面指针前移,比之小的放在前面指针后移,元素交换; 最后前后指针重合,重合位置以此分割,排序,再次重复之前的步骤;

import java.util.Arrays;
import java.util.Scanner;

public class quicksort {

    public static void main(String[] args) {
         int[] nums = {9,5,7,6,0,4,3,2,1};
            quickSort(nums,0, nums.length-1);
            System.out.println(Arrays.toString(nums));
        }
        public static void quickSort(int[] nums,int left,int right){
          if(left>right)return;
          int i=left;
          int j=right;
          int basic=nums[left];
          while(i<j) {
              while(i<j&&basic<=nums[j])j--;  //比基数大,指针前移
              while(i<j&&basic>=nums[i])i++;  //比基数小,指针后移
              int temp=nums[i];               //交换
              nums[i]=nums[j];
              nums[j]=temp;
          }
          nums[left]=nums[i];                 //移动基数
          nums[i]=basic;
          quickSort(nums,left,i-1);
          quickSort(nums,i+1,right);
        }
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值