package com.liuxt.sort.impl;
import com.liuxt.sort.Sort;
public class QuickImpl implements Sort {
/** * 快速排序的基本思想: * 将待排序的数组的数分成两个部分。其中一部分的关键字均少于另一部分的关键字。 * 然后再分别对这两部分继续排序。一直递归,最后使这整个序列有序。 * * * @param data */ public void sortData(int[] data) { quickSort(data, 0, data.length - 1); } /** * 实现快速排序的具体函数 * @param data 数组 * @param low 数组的上标 * @param high 数组的下标 */ private void quickSort(int data[],int low,int high){ int i,j,privokey; if (low<high){ privokey=data[low]; //以数组的第一个元素为基准进行划分。 i=low;j=high; while(i<j) { //从两端往中间交替的扫描 while(i<j&&data[j]>=privokey) j--; if (i<j) data[i++]=data[j]; //比轴心元素小的移动到低下标端 while(i<j&&data[i]<=privokey) i++; if(i<j) data[j--]=data[i]; //比轴心元素的大的,移动到高下标端 } data[i]=privokey; //轴心元素移动到正确的位置 quickSort(data,low,i-1); quickSort(data,i+1,high); } }
}
相关资源:敏捷开发V1.0.pptx