自己总结了一下快速排序算法及思想:
package main.com.xia.test3;
import java.util.Arrays;
public class Answer1{
public static void main(String[] args){
int[] test2 = new int[]{10,1,2,9,6,3,7,8,4,5};
quickSort(0,test2.length - 1,test2);
System.out.println(Arrays.toString(test2));
}
public static void quickSort(int start,int end,int[] array){
if(start < end){
int partion = getPosition(start,end,array);
quickSort(start,partion,array);
quickSort(partion + 1,end,array);
}
}
public static int getPosition(int start,int end,int[] array){
int tmp = array[start];
while(start < end){
//从数组右面开始寻找一个比tmp小的值。
while(start < end && array[end] >= tmp){
end--;
}
array[start] = array[end];
//从数组右面开始寻找一个比tmp小的值。
while(start
大家仔细观察getPosition()的内容是不是很面熟。不错和普通的交换算法很相似
public static int getPosition(int start,int end,int[] array){
int tmp = array[start];
while(start < end){
//从数组右面开始寻找一个比tmp小的值。
while(start < end && array[end] >= tmp){
end--;
}
array[start] = array[end];
//从数组右面开始寻找一个比tmp小的值。
while(start
如果把函数中的while循环注释掉,方法就变成了。
public static int getPosition(int start,int end,int[] array){
int tmp = array[start];
// while(start < end){
//从数组右面开始寻找一个比tmp小的值。
// while(start < end && array[end] >= tmp){
// end--;
// }
array[start] = array[end];
//从数组右面开始寻找一个比tmp小的值。
// while(start
普通冒泡算法:截图
快速排序从右面选择基数算法:
package Java多线程编程核心技术.chapter7;
import java.util.Arrays;
public class Answer1{
public static void main(String[] args){
int[] test2 = new int[]{10,1,2,9,6,3,7,8,4,5};
quickSort(0,test2.length - 1,test2);
System.out.println(Arrays.toString(test2));
}
public static void quickSort(int start,int end,int[] array){
if(start < end){
int partion = getPosition(start,end,array);
quickSort(start,partion -1,array);
quickSort(partion ,end,array);
}
}
public static int getPosition(int start,int end,int[] array){
int tmp = array[end];
while(start < end){
//从数组左面开始寻找一个比tmp大的值。
while(start < end && array[start] <= tmp){
start++;
}
array[end] = array[start];
//从数组右面开始寻找一个比tmp小的值。
while(start = tmp){
end--;
}
array[start] = array[end];
}
array[end] = tmp;
return start;
}
}



