尚硅谷Java数据结构学习记录18-快速算法

快速算法选取数组中间的位置作为pri,将数组分为左侧和右侧两段,同时设置left和right两个指标,分别从左和右侧对pri进行比较,如果小于(左侧)大于(右侧)则继续,有大于小于的则交换,j交换后继续while,退出的while的条件是left > right

package sort;

import java.util.Arrays;

public class QuickSort {
	public static void main(String[] args) {
		int array[] = {-9,78,0,23,-67,70};
		quickSort(array,0,array.length-1);
		System.out.printf("最终的排序结果为:%s",Arrays.toString(array));
	}
	
	public static void quickSort(int[] array,int left,int right) {
		int l = left; //左下标
		int r = right; //右下标
		int privot = array[(l + r) /2];
		int temp = 0;
		while(l < r) {
			while(array[l] < privot) {
				l++;
			}
			while(array[r] > privot) {
				r--;
			}
			if( l >= r) {
				break;
			}
			
			temp = array[l];
			array[l] = array[r];
			array[r] = temp;
			
			if(array[l] == privot) {
				r--;
			}
			if(array[r] == privot) {
				l++;
			}
		}
		
		
		
	}
}

 

你可能感兴趣的:(数据结构JAVA)