package com.spring.dao;
public class Test3 {
/**
* @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int []str = {12,76,18,35,43,15,38,2,32,65,23,72,0,64,16,678}; QuickSort(str,0,str.length-1); for(int i = 0 ; i < str.length ; i ++){ System.out.print(str[i]+" "); } } public static void QuickSort(int[] pData,int left, int right) { int i, j; //获取当前需要排序数组的起始与结束下标 int middle; //标记值,用于定位中心点 int strTemp;//局部存储变量 i = left; j = right; middle = pData[(left + right) / 2];//获取标记值 do { while ((pData[i] < middle) && (i < right))i++; //独立循环获取中心值左边,所有值中小于中心值的下标。 while ((pData[j] > middle) && (j > left))j--; //独立循环获取中心值右边,所有值中大于中心值的下标。 if (i <= j){//将中心值左边大于中心值数值的数 与 中心值右边小于中心值 的值,调换位置。 strTemp = pData[i]; pData[i] = pData[j]; pData[j] = strTemp; i++; j--; } } while (i <= j); //直至中心值左右两端下标重叠。侧停止,完成第一次遍历 //注意此时的I,J值,将当前数组已中心值拆分,递归调用。 if (left < j) //将拆分的左边数组重新进行排序 QuickSort(pData, left, j); if (right > i) //将拆分的右边数组重新进行排序 QuickSort(pData, i, right); }}
原文链接: