JAVA非递归快排
import java.util.Stack;
public class Text {
public static void main(String []args){
int[] a={10,8,4,5,3,1,2};
quickSort(a);
}
static void quickSort(int[] a){
Stack stack=new Stack();
int i=0,j=a.length-1,mid=a.length/2,min,max;
int tmp;
stack.push(j);
stack.push(i);
while(!stack.isEmpty()){
i=min=(int) stack.pop();
j=max=(int) stack.pop();
mid=(i+j)/2;
while(i<j){
while(i<j&&a[i]<a[mid]){
i++;
}
while(i<j&&a[j]>a[mid]){
j--;
}
if(i==mid){
mid=j;
}else if(j==mid){
mid=i;
}
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
if(min<mid-1){
stack.push(mid-1);
stack.push(min);
}
if(max>mid+1){
stack.push(max);
stack.push(mid+1);
}
}
for(int k=0;k<a.length;k++){
System.out.print(a[k]+" ");
}
}
}