菜鸟学java,练习写的快速排序算法


我最近正在学java,练习时写了一个快速排序算法,现在发上来,希望大家给评测一下……轻拍呵

代码如下:

 

import java.util.Arrays;

//快速排序算法
public class QuickSort {
	public static void main(String[] args){
		//待排序的数组
		int[] arr = new int[10];
		for(int i=0;i<arr.length;i++){
			arr[i] = (int)(100 * Math.random());
		}
                System.out.println(Arrays.toString(arr));

		sort(arr,0,arr.length-1);

	}
        public static void sort(int[] a,int first,int end){
		/*
		 * 1、从j开始从后往前,找到第一个小于key的数组元素arr[j],和arr[i]交换位置
		 * 2、从i开始从前往后,找到第一个大于key的数组元素arr[i],和arr[j]交换位置
		 * 3、i++,j--
		 * 4、重复1、2、3直到i = j;
		 */
		int tmp;
		int k = first;//保存key值每轮比较之后的所在的位置
                int i = first;
                int j = end;
                int key = a[i];
		while(i != j){
			while(j > i){
				if(key > a[j]){
					 tmp = a[i];
					 a[i] = a[j];
					 a[j] = tmp;
					 break;
				}
				j--;
			}
			while(i < j){
				if(key < a[i]){
					 tmp = a[i];
					 a[i] = a[j];
					 a[j] = tmp;
					 break;
				}
				i++;
                                    k++;   /*因为i是从前往后找的,只要没有找到比Key大的i就加1,那么就是找到了一个比key小的,所以比key小的数组元 素的数目就加1,key最终所在的位置是它前面的数都比它小,后面的数都比他大*/
			}
		}
                System.out.println(Arrays.toString(a));
                if(first < k-1){
                   sort(a,first,k-1);
                }
                if(end > k + 1){
                   sort(a,k + 1,end);
                }
		   
        }

}


 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值