蓝桥杯算法复习——快排

目标:将一个本身无序的数组按照从小到大的顺序或者从大到小的顺序排序。

基本思想:编写一个quickSort函数,函数的参数有三个,要排序的数组a[]、要排序的数组中的低下标low、要排序的数组高下标high。

接着在遍历时当low<high时:每次均把最小的下标的数组中的数赋值给暂存变量temp。当左右两边的下标没有发生交叉时完成下面的工作:

比较数组中最后一个数与temp大小,如果比temp大,则将现行的下标减一,并将此时的左右下标位置处的数进行交换;否则,不对现行下标执行减一操作,仅将左右下标数交换。同理比较数组中第一个数与temp大小,如果比temp小,则将左下标加一,接着将左右位置处的数进行交换,否则,不执行减一操作,仅交换左右两边数。(这是按照从小到大排序的,如果要从大到小,则按照相反的操作即可)。

代码如下(JAVA)

package 排序;

public class QuickSort {
	public static void main(String[] args) {
		int a[] = {8,4,1,2,0,-2,10,10,10,5,2,7,9};
		quickSort(a,0,a.length-1);
		for(int i = 0;i<a.length;i++) {
			System.out.print(a[i]+" ");
		}
		
	}
	public static void quickSort(int[] a,int low,int high) {
		int left = low;
		int right = high;
		if(left<=right) {
			int temp = a[low];
			while(left!=right) {
				while(left<right&&a[right]>=temp) {
					right--;
				}
				a[left] = a[right];
				while(left<right&&a[left]<=temp) {
					left++;
				}
				a[right] = a[left];

			}	
			a[left] = temp;
			quickSort(a, low, left-1);
			quickSort(a, left+1, high);
		}

	

}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

拉姆哥的小屋

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

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

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

打赏作者

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

抵扣说明:

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

余额充值