(算法导论)快速排序

快速排序(算法导论)

  1. 算法思想
    一个单向的指针来对数组进行遍历:
    (1)首先将第一元素设置为基准元素,初始化i=low, j=low+1
    (2)利用j从第二个元素开始与基准元素比较,如果大于基准元素则什么都不执行,如果小于基准元素,则i++,并将其与前面较大的元素进行交换(A[i]和A[j]交换)
    (3)继续使用同样的方法遍历下面的元素,遍历结束后,再将基准元素放到中间位置(A[i]和A[low]交换)
    (4)接着递归调用排列两个子序列,直至整个序列有序。
  2. 划分函数伪代码
    (算法导论)快速排序_第1张图片
  3. 快速排序的伪代码
    (算法导论)快速排序_第2张图片
  4. java代码实现

	//交换数组中两个元素的方法
	public static void swap(int a[], int i, int j)
	{
     
		int t = a[i];
		a[i] = a[j];
		a[j] = t;
	}
	public static int  split(int a[],int low ,int high) {
     
		int x=a[low];
		int i=low;
		for (int j = low+1; j<=high; j++) {
     
			if(a[j]<=x) {
     
				i++;
				//交换
				swap(a, i, j);
			}
		}
		swap(a, low, i);
		return i;
	}
	public static void sort(int a[],int low,int high) {
     
		int q=split(a, low, high);
		if(low<high) {
     
			sort(a,low,q-1);
			sort(a,q+1, high);
		}
	}

你可能感兴趣的:(java,快速排序)