排序算法实现(快排,)

  1. 快排
package com.sort;

import java.util.Arrays;

public class QuickSort {

	public static void main(String[] args) {

		int[] arr = { -9, 78, 0, 23, -567, 70 };
		quickSort(arr, 0, arr.length - 1);
		System.out.println(Arrays.toString(arr));
	}

	public static void quickSort(int[] arr, int left, int right) {
		int l = left;// 左下标
		int r = right;// 右下标

		// 中轴值
		int pivot = arr[(left + right) / 2];
		int temp = 0;// 临时变量,作为交换时使用
		// while 循环的目的是让pivot 值小放到左边,比pivot值大放到右边
		while (l < r) {

			// 在pivot左边一直找,找到比pivot大的
			while (arr[l] < pivot) {
				l += 1;
			}

			while (arr[r] > pivot) {
				r -= 1;
			}

			// 以此基准,左边都小于基准,右边都大于基准,退出循环
			if (l >= r) {
				break;
			}

			// 否则,交换
			temp = arr[l];
			arr[l] = arr[r];
			arr[r] = temp;

			// 如果交换完后,发现pivot==arr[l] ,则r--,前移(左边只有俩个数 -9,-567 中轴在-9
			// ,left也在-9,right在-567,l l) {
			quickSort(arr, l, right);
		}
	}
}

你可能感兴趣的:(算法)