嘿嘿,开始复习数据结构啦!从排序开始,首先来个快排!
快速排序: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] + " ");
}
}
接下来是打印结果:
博客写的可能比较乱,还请高人指点啊!