Java 实现快速排序法对数组进行排序

 快速排序是对冒泡排序的一种改进,其排序速度相对较快。

基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据要小,然后再按照这个方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列的目的。最坏情况的时间复杂度为O(N ^ 2),最好为O(nlog2n)。

快速排序的实现过程:假设要排序的数组是A [1] ... A [N],首先任意选取一个数据(通常选取第一个数据)作为关键数据,然后将所有比他小的数放在前面,所有比他大的放在后面,这个过程称为一次快速排序。一趟快速排序的算法是:

  1. 设置两个变量I,J,排序开始的时候I:= 1,J:= N;
  2. 以第一个数群元素作为关键数据,赋值给X,即X:= A [1];
  3. 从J开始向前搜索,即由后开始向前搜索(J:= J-1),找到第一个小于X的值,两者交换;
  4. 从I开始向前搜索,即由前开始向后搜索(I:= I + 1),找到第一个大于X的值,两者交换;
  5. 重复第3,4步,直到I =学家
public class quickSort {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] intArray = {12,11,45,6,8,43,40,57,3,20};
		System.out.println("排序前的数组:");
		for(int i=0;i= mid)
				right--;
			temp = array[right];					//将比中心点小的数据移到左边
			array[right] = array[left];
			array[left] = temp;
			
			while(left < right && array[left] <= mid)
				left++;
			temp = array[right];					//将比中心点大的数据移到右边
			array[right] = array[left];
			array[left] = temp;
		}
		array[left] = mid;							//中心移到正确位置
		return left;								//返回中心点
	}
	
	

}

Java 实现快速排序法对数组进行排序_第1张图片

你可能感兴趣的:(Java 实现快速排序法对数组进行排序)