Java——快速排序

快速排序

定义:快速排序的思想非常简单,在待排序的数列中,我们首先要找一个数字作为基准数)。为了方便,我们一般选择第 1 个数字作为基准数。接下来我们需要把这个待排序的数列中小于基准数的元素移动到待排序的数列的左边,把大于基准数的元素移动到待排序的数列的右边。这时,左右两个分区的元素就相对有序了;接着把两个分区的元素分别按照上面两种方法继续对每个分区找出基准数,然后移动,直到各个分区只有一个数时为止。
在这里插入图片描述
此时交换 5和7 的位置 。

在这里插入图片描述
之后就采用递归的思想(方法中调用方法)

代码

package xq0810;

public class QuickSort {
	
	
	 public  static void main(String[] args) {
		 
		 int [] array= {1,2,5,10,4,6,8,9,7,3};
		 
		  quickSort(array,0,array.length -1);
		  
			System.out.println("从小到大排序后的结果是:");
	        for(int i=0;i<array.length;i++) {
	        	 System.out.print(array[i]+" ");
	        }
	           
	  }
	
	public  static void quickSort(int []array,int left,int right) {
		if(left>right) {      //先进行判断,如果左边索引比右边索引大,是不合法的
			return;
		}
		int base=array[left];  //定义基准数
		int i=left;            //定义变量i,指向最左边
		int j=right;           //定义变量j,指向最右边
		while(i!=j) {          //当i不等于j时,再循环中进行索引
			while(array[j]>=base && i < j) {    //如果j从右边检索到比基准数小,就要停下
				j--;
			}
			while(array[i]<=base && i < j) {     //如果i从左边检索到比基准数大,就要停下
				i++;
			}
			int temp=array[i];                  //交换i和j位置的元素
			array[i]=array[j];
			array[j]=temp;
		}
		array[left]=array[i];                   //如果上边的循环没成立,说明i和j在同一个元素上,此时交换基准和这个相遇的元素
		array[i]=base;                          //此时基准数左边的数都比他小,右边的数都比他大
		quickSort(array,left,i-1);             //重新索引基准数左边的
		quickSort(array,j+1,right);            //重新索引基准数右边的
	}
	
 
}

但是快速排序是一个不稳定的排序算法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

真真最可爱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值