算法入门——快速排序

来源:互联网 发布:linux操作vasp计算 编辑:程序博客网 时间:2024/06/07 00:11

快速排序:每次选择一个基准数,本程序每次选择目标数组的最左边为基准数,可以实现每次固定基准数的位置,快速排序最差时间复杂度为O(N²),平均时间复杂度为O(NlogN)。

package test;import java.util.Arrays;public class 快速排序 {public static void main(String[] args) {int[] a = new int[]{6,1,2,8,9,3,4,5,10,7};quicksort(a,0,a.length-1);}private static void quicksort(int[] a, int left, int right) {//如果数组为空,或传入左右数值有误,退出;if(a == null || a.length == 0 || left >= right)return;int i = left,j = right;int pivot = a[left];System.out.println(pivot);while (i < j) { while (a[j] > pivot && i <= j)j--;while (a[i] < pivot && i <= j)i++;if (i < j) {int temp = a[i];a[i] = a[j];a[j] = temp;}System.out.println(Arrays.toString(a));}if (left < i - 1)quicksort(a, left, i - 1);if (i < right)quicksort(a, i+1, right);}}

输出结果:

6[5, 1, 2, 8, 9, 3, 4, 6, 10, 7][5, 1, 2, 6, 9, 3, 4, 8, 10, 7][5, 1, 2, 4, 9, 3, 6, 8, 10, 7][5, 1, 2, 4, 6, 3, 9, 8, 10, 7][5, 1, 2, 4, 3, 6, 9, 8, 10, 7][5, 1, 2, 4, 3, 6, 9, 8, 10, 7]5[3, 1, 2, 4, 5, 6, 9, 8, 10, 7][3, 1, 2, 4, 5, 6, 9, 8, 10, 7]3[2, 1, 3, 4, 5, 6, 9, 8, 10, 7][2, 1, 3, 4, 5, 6, 9, 8, 10, 7]2[1, 2, 3, 4, 5, 6, 9, 8, 10, 7][1, 2, 3, 4, 5, 6, 9, 8, 10, 7]9[1, 2, 3, 4, 5, 6, 7, 8, 10, 9][1, 2, 3, 4, 5, 6, 7, 8, 9, 10][1, 2, 3, 4, 5, 6, 7, 8, 9, 10]7[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

备份原文链接:https://www.90skys.cn/archives/75

原创粉丝点击