您的位置:首页 > 其它

快速排序

2015-09-14 10:23 351 查看
嘿嘿,开始复习数据结构啦!从排序开始,首先来个快排!

快速排序:1.先找到一个中轴

2.将比中轴大的移到中轴的右边

3.将比中轴小的移到中轴的左边

主要代码如下:

//找中轴
public static int getMiddle(int[] list,int low,int high){
int temp = list[low];  //假设第一个数是中轴
while(low < high){
while(low < high && list[high] > temp){ //如果轴右面的比轴大就不动
high--;
}
list[low] = list[high];  //如果轴右面的比轴小就将该数移到低端
for(int i = 0;i<list.length;i++){
System.out.print(list[i] + " ");
}
System.out.println();
while(low < high && list[low] < temp){
low++;
}
list[high] = list[low];
for(int i = 0;i<list.length;i++){
System.out.print(list[i] + " ");
}
System.out.println();
}
list[low] = temp;
for(int i = 0;i<list.length;i++){
System.out.print(list[i] + " ");
}
System.out.println();
System.out.println();
System.out.println(low);
System.out.println();
System.out.println();
return low;
}

//快速排序
public static void quickSort(int[] list,int low,int high){
if(low < high){
int middle = getMiddle(list,low,high);
quickSort(list,low,middle-1);
quickSort(list,middle+1,high);
}
}


以上代码也有参考别人的成分,不过自己已经明白!我贴出测试代码和打印的数据,希望对自己和你们有帮助!按着程序走一遍其实就懂了!算法的话最主要还是理解其真理最佳!

以下是测试代码:

public static void main(String[] args){
int[] list = new int[]{2,5,1,6,9,0};
quickSort(list,0,list.length-1);
for(int i=0;i<list.length;i++){
System.out.print(list[i] + " ");
}
}
接下来是打印结果:



博客写的可能比较乱,还请高人指点啊!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: