快速排序

首先,要了解快速排序的思想

    1、存储:用数组存储要排序的数据。

2、排序:

(1):选择一个关键值key,一般是排序的第一个元素。

(2):从右边开始找出第一个比key小的值,放在key的左边。

(3):从左边开始找出第一个比key大的值,放在key的右边。

(4):重复(2)(3)步骤,将数据划分成两部分,左边比key小,右边比key大。

(5):然后再分别对key左右两边的数组进行快速排序。

总体思想是这样。编程的时候要注意好多地方。

注意:

1、这是一个递归,要有结束条件。

    下面是代码:

import java.util.Scanner;

public class QuickSortWhile {
	public static void main(String args[]){
		Scanner sc=new Scanner(System.in);
		int n;
		System.out.println("输入排序总个数");
		n=sc.nextInt();
		int array[]=new int[n];
		System.out.println("输入数据");
		for(int i=0;i<n;i++){
			array[i]=sc.nextInt();
		}
		int result[]=new int[n];
		quicksort(0,n-1,array);
		for(int i=0;i<n;i++){
			System.out.println(array[i]);//输出结果
		}
	}
		public static void quicksort(int m,int n,int A[]){
			int low=m;
			int high=n;
			if(low>=high){//递归结束条件
				return ;
			}
			int key=A[low];
			while(low<high){
				while(low<high&&key<=A[high])high--;//从右边找第一个小于key的值
				if(low<high){//若找到了,则先判断是否符合要求,这点很重要
					A[low]=A[high];//赋值
					low++;//指针下移
				}
				while(low<high&&key>=A[low])low++;
				if(low<high){
					A[high]=A[low];
					high--;
				}	
			}
			A[low]=key;//一遍排序完成,将数据分成两部分,最后将key值填充到low=high的位置
			quicksort(m,low-1,A);//对左半边排序
			quicksort(low+1,n,A);//对右半边排序
			return ;
		}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值