快速排序
快速排序是由冒泡排序改进而得,从无序序列中挑选一个记录作为中心记录,将所有的数值与中心记录进行比较大的放在中心值右边,小的放入中心值左边,然后再对中心值左右子序列进行相同操作
实现:
/**
* 快速排序
* @author 陈鑫
*
*/
public class QuickSort {
public static int sort(int [] arr,int low,int hight) {
int key = arr[low];//保存中心值
while(low<hight) {
//从右开始找寻比中心值小的
while(low<hight&&arr[hight] > key) {
hight--;
}
//将赋值到low位置的
arr[low] = arr[hight];
//从左开始找寻比中心值大的
while(low<hight&&arr[low] < key) {
low++;
}
//将赋值到hight位置的
arr[hight] = arr[low];
}
//中心值到位
arr[low] = key;
return low;
}
public static int[] quick(int [] arr,int low,int hight) {
if(low<hight) {
int pivotkey = sort(arr,low,hight);
quick(arr,low,pivotkey-1);// 对左子表进行递归排序
quick(arr,pivotkey+1,hight);// 对右子表进行递归排序
}
return arr;
}
public static void main(String[] args) {
//准备数据,调用方法
int[] sort = quick(new int[] {4,2,8,1,3,9,23,45,7,6},0,9);
//遍历打印
for(int j=0;j<sort.length ;j++) {
System.out.println(sort[j]);
}
}
}