1.快速排序思想:
1>快速排序:
通过一趟排序讲待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则分别对这两部分进行排序,直到整个序列有序。
2>图形记忆
2.代码
package day07;
/*
快速排序:
通过一趟排序讲待排序记录分割成独立的两部分,
其中一部分记录的关键字均比另一部分关键字小,
则分别对这两部分进行排序,
直到整个序列有序。
*/
public class QuickSortTest {
private static void swap(int[] data,int i,int j){
int temp = data[i];
data[i] = data[j];
data[j] = temp;
}
private static void subSort(int[] data,int start,int end){
if (start < end){
int base=data[start];
int low=start;
int hight=end+1;
while (true){
while (low<end && data[++low]-base<=0);
while (hight>start && data[--hight]-base>=0);
if (low<hight){
swap(data,low,hight);
}else {
break;
}
}
swap(data,start,hight);
subSort(data,start,hight-1);
subSort(data,hight+1,end);
}
}
public static void quickSort(int[] data){
subSort(data,0,data.length-1);
}
public static void main(String[] args) {
int[] data={9,-16,30,23,-30,-49,25,21,30};
System.out.println("排序之前:\n"+java.util.Arrays.toString(data));
quickSort(data);
System.out.println("排序之后:\n"+java.util.Arrays.toString(data));
}
}
3.结果
排序之前:
[9, -16, 30, 23, -30, -49, 25, 21, 30]
排序之后:
[-49, -30, -16, 9, 21, 23, 25, 30, 30]