快速排序总结
2018-01-14 15:15
169 查看
快速排序也是交换类的排序,是以一个“枢纽”为中心,将序列分成两部分,枢纽的一边全是比它小的,另一边全是比它大的。
package test;
import java.util.Arrays;
public class QuickSort {
public static void sort(int[] a) {
sort1(a, 0, a.length-1);
}
private static void sort1(int[] a, int l, int r) {
int temp;
int i=l,j=r;
if(l<r){
temp = a[l];
while(i!=j){
while(i<j&&a[j]>temp) //从右向左扫描找到一个小于temp的元素
--j;
if(i<j){
a[i]=a[j];
++i;
}
while(i<j&&a[i]<temp)
++i;
if(i<j){
a[j]=a[i];
--j;
}
}
a[j]=temp;
sort1(a,l,i-1);
sort1(a,i+1,r);
}
System.out.println(Arrays.toString(a));
}
public static void main(String[] args) {
int[] a = {4,2,5,1,6,8,3,0,7,9};
System.out.println(Arrays.toString(a));
QuickSort.sort(a);
}
}
小白原创,如有错误请指导改正,未经作者允许,禁止转载。
package test;
import java.util.Arrays;
public class QuickSort {
public static void sort(int[] a) {
sort1(a, 0, a.length-1);
}
private static void sort1(int[] a, int l, int r) {
int temp;
int i=l,j=r;
if(l<r){
temp = a[l];
while(i!=j){
while(i<j&&a[j]>temp) //从右向左扫描找到一个小于temp的元素
--j;
if(i<j){
a[i]=a[j];
++i;
}
while(i<j&&a[i]<temp)
++i;
if(i<j){
a[j]=a[i];
--j;
}
}
a[j]=temp;
sort1(a,l,i-1);
sort1(a,i+1,r);
}
System.out.println(Arrays.toString(a));
}
public static void main(String[] args) {
int[] a = {4,2,5,1,6,8,3,0,7,9};
System.out.println(Arrays.toString(a));
QuickSort.sort(a);
}
}
小白原创,如有错误请指导改正,未经作者允许,禁止转载。
相关文章推荐
- 比较排序总结——直接插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序
- 冒泡排序、选择排序、堆排序、快速排序、插入排序算法复杂度分析与算法实现(自己总结与转)
- 算法导论 第7章 快速排序 学习总结
- 排序总结(冒泡、选择、插入、快速)
- 【万字总结】快速排序详解与各种线性时间排序对比
- 快速排序的总结
- 快速排序的总结
- 【算法总结系列-1】快速排序-c语言实现
- c语言排序之冒泡排序,选择排序,插入排序,快速排序总结
- 归并排序,堆排序,基数排序,希尔排序,快速排序,交换排序,选择排序和插入排序的总结和比较
- 数据结构复习 快速排序个人总结
- 冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序六大排序大总结
- 快速排序的划分算法的总结和思考
- 常用排序算法总结(二) ---- 插入排序,快速排序
- 七大内部排序算法总结(插入排序、希尔排序、冒泡排序、简单选择排序、快速排序、归并排序、堆排序)
- 排序算法总结(6)--快速排序
- Java 选择排序、冒泡排序、快速排序、直接插入排序、Java自带的排序等方法的使用和总结
- 【排序】快速排序C++实现总结
- 排序总结:堆排序、快速排序、归并排序、基数排序
- 快速排序总结