快速排序 : 分治和递归思想
2017-02-09 15:07
246 查看
java] view
plain copy
import java.util.Arrays;
public class QuickSort{
private static int partition(int data[],int low,int high){//分治
int key = data[low];
while(low<high){
while(low<high && data[high]>key)//从右向左
high--;
data[low] = data[high];
while(low<high && data[low]<key)//从左向右
low++;
data[high] = data[low];
}
data[low] = key;//把轴元素放在轴所在地位置
return low;//返回轴所在的位置
}
private static void quickSort(int data[],int low,int high){//递归
int q;
if(low<high){
q = partition(data,low,high);
quickSort(data,q+1,high);
quickSort(data,low,q-1);
}
}
public static void main(String args[]){
int a[] = new int[]{1,4,6,2,3,5,7};
quickSort(a,0,a.length -1);
System.out.println(Arrays.toString(a));
}
plain copy
import java.util.Arrays;
public class QuickSort{
private static int partition(int data[],int low,int high){//分治
int key = data[low];
while(low<high){
while(low<high && data[high]>key)//从右向左
high--;
data[low] = data[high];
while(low<high && data[low]<key)//从左向右
low++;
data[high] = data[low];
}
data[low] = key;//把轴元素放在轴所在地位置
return low;//返回轴所在的位置
}
private static void quickSort(int data[],int low,int high){//递归
int q;
if(low<high){
q = partition(data,low,high);
quickSort(data,q+1,high);
quickSort(data,low,q-1);
}
}
public static void main(String args[]){
int a[] = new int[]{1,4,6,2,3,5,7};
quickSort(a,0,a.length -1);
System.out.println(Arrays.toString(a));
}
相关文章推荐
- 【算法】快速排序——基于分治思想的实现
- 分治与递归的结合-------快速排序
- 递归与分治策略-2.8快速排序
- 快速排序-递归与分治
- [算法简结]递归分治(三):快速排序
- Java语言描述:递归与分治策略之合并排序与快速排序
- 高速排序(递归与分治的思想)
- 分治与递归之快速排序
- 分治思想之快速排序
- 【快速排序、合并排序与分治思想】
- 递归与分治——快速排序
- 递归与分治——快速排序
- 归并排序 && 快速排序 ——分治思想
- 快速排序之“挖坑填数+分治”思想实现
- 由快速排序到分治思想
- 快速解析 递归与分治思想
- 快速排序的递归实现。 分治法。
- 用纯C语言实现快速排序,分递归调用法和非递归调用法。
- “盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛题解&&源码【A,水,B,水,C,水,D,快速幂,E,优先队列,F,暴力,G,贪心+排序,H,STL乱搞,I,尼姆博弈,J,差分dp,K,二分+排序,L,矩阵快速幂,M,线段树区间更新+Lazy思想,N,超级快速幂+扩展欧里几德,O,BFS】
- (四)算法--排序算法分治 快速排序