史上最简短的快速排序算法java实现

时间:2021-06-18

废话不多说,直接上代码,看看是不是最简洁的


	static void sort(int[] ss, int b, int e) {
		if (b >= e)
			return;
		
		int i = b, j = e;
		int k = ss[b];
		while (i < j) {
			while (i < j && ss[i+1] <= k) {//收缩左边滑块
				i++;
			}
			while (i < j && ss[j] >= k) {//收缩右边滑块
				j--;
			}
			if (i < j) {//左右两边都收缩不动后肯定是左边比标记值大,右边比标记值小,交换左右两边滑块上的值
				swap(ss,i+1,j);
			}
		}
	
		swap(ss,b,i);//把标记值放左边滑块位置上
		
		System.out.println(Arrays.toString(ss));
		sort(ss, b, i - 1);
		sort(ss, i+1, e);
	}  


	private static void swap(int[] ss,int m,int n) {
		int v=ss[m];
		ss[m]=ss[n];
		ss[n]=v;
	}



【推荐】 FreeMarker标签使用以及精度数字的处理
【推荐】 java算法 -余弦相似度计算字符串相似率
【推荐】 Spark入门实战系列--8.Spark MLlib(下)
【推荐】 常用经典10大排序