问题:使用快速排序法对{12,2,5,14,18,6,8,10,20,16}数组进行排序
求解代码:
public class kuaisupaixu {
public static void main(String[] args) {
int[] n={12,2,5,14,18,6,8,10,20,16};
kuaisupaixu s=new kuaisupaixu();
s. paixu(n,0,n.length-1);
for(int z=0;z<n.length;z++)
System.out.print(n[z]+"\t");
}
public void paixu(int[] n,int left, int right) {
if (left>right)
return;
int i=left;
int j=right;
int temp=n[left];//temp为初始的基准元素
int index=left;//index初始为基准元素的下标,之后则为要放置比基准元素大的值的位置
while(i<j) { //i<j是进入循环的条件
while(n[j]<=temp&&i<j) {
n[i]=n[j];
i++;
index=j;
break;
}
j--;
while(n[i]>=temp&&i<j) {
n[index]=n[i];
index=i;
j--;
break;
}
i++;
}
n[index]=temp;
paixu(n,left,index-1);
paixu(n,index+1,right-1);
}
}
快速排序法的思想见:
(1条消息) 使用 Java 实现快速排序(详解)_惜鸟的博客-优快云博客_快速排序java
写的非常好,大家可以看一下~