快速排序

public class Order_KS {

//快速排序 挖坑 填坑 分而治之的思想
int value[]=null;
public int[] getValue() {
return value;
}
public void setValue(int[] value) {
this.value = value;
}
int AdjustArray(int s[], int l, int r) //返回调整后基准数的位置
{

int i = l, j = r;
int x = s[l]; //s[l]即s[i]就是第一个坑
while (i < j)
{
//在Java虚拟机中,当
// 从右向左找小于x的数来填s[i]
while(i < j && s[j] >= x)
j--;
if(i < j)
{
s[i] = s[j]; //将s[j]填到s[i]中,s[j]就形成了一个新的坑
i++;
}

// 从左向右找大于或等于x的数来填s[j]
while(i < j && s[i] < x)
i++;
if(i < j)
{
s[j] = s[i]; //将s[i]填到s[j]中,s[i]就形成了一个新的坑
j--;
}
}
//退出时,i等于j。将x填到这个坑中。
s[i] = x;
value=s;

return i;
}
void quick_sort1(int s[], int l, int r)
{
if (l < r)
{
int i = AdjustArray(s, l, r);//先成挖坑填数法调整s[]
quick_sort1(s, l, i - 1); // 递归调用
quick_sort1(s, i + 1, r);
}
}
public static void main(String[] args) {
Order_KS qKs=new Order_KS();
int s[]={1,3,412,31,13,1,123,231,231};
qKs.quick_sort1(s, 0, s.length-1);
int value[]=qKs.getValue();
for(int i=0;i<value.length;i++)
{
System.out.println(value[i]);
}
}

}

原文地址:https://www.cnblogs.com/hds-study-blogs/p/6655215.html