快速排序算法
已知数组int[] max={6,5,2,9,7,4,0};用快速排序算法按降序对其进行排列,并返回数组
算法过程
设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一躺快速排序。一躺快速排序的算法是:
1)设置两个变量I、J,排序开始的时候:I=1,J=N;
2)以第一个数组元素作为关键数据,赋值给X,即 X=A[1];
3)从J开始向前搜索,即由后开始向前搜索(J=J-1),找到第一个小于X的值,让该值与X交换;
4)从I开始向后搜索,即由前开始向后搜索(I=I+1),找到第一个大于X的值,让该值与X交换;
5)重复第3、4步,直到 I=J;
public static void main (String[] args)
{
QuickSort sort = new QuickSort();
int array = {2,3,4,5,4,3,6};
test.array = array;
test.run();
for(int i=0 ; i<length ; i ++)
{
Console.Write(test.array[i];);
}
}
public class QuickSort()
{
public int[] array =null;
public void run()
{
if(array== null )return;
}
private void sort(int lowest, int hightest )
{
if(loset<=0 || lowest >= hightest)
{
return;
}
keyData = array[lowest];
keyIndex= 0;
hight = hist
low = lowlis;
for( ; low <=hight; heiht--; low ++)
{
for(j= hight;j>low ;j--)
{
if(key > array[j])
{
swapLowHight(array[low], array[j] );
keyIndex= j;
break;
}
}
for(i= low; i<hight ; i++)
{
if(key>array[i])
{
swapLowHight(array[low], array[keyIndex] );
keyIndex= i;
break;
}
}
}
sort( lowest,keyIndex-1);
sort( keyIndex +1 , hight);
}
}