package com.yss.newrisk.custom.Test.a;
public class Test1 {
public static int[] Arr1 = {5,233,54,23,78,3,56,2,8,46};
public static void main(String[] args) {
System.out.println("修改前:");
for (int i = 0; i < Arr1.length; i++) {
System.out.print(Arr1[i] + " ");
}
System.out.println("");
System.out.println("修改后:");
for (int i = 0; i < Arr1.length; i++) {
System.out.print(Arr1[i] + " ");
}
}
//iL:起始坐标;iR:结束坐标
public static void ChangeArr2(int iL,int iR) {
int iFlagValue; //基准值,默认为起始坐标的值
int iTempValue; //临时变量
int tmpL; //游标,左边坐标
int tmpR; //游标,右边坐标
if(iL >= iR) return;
tmpL = iL;
tmpR =iR;
iFlagValue = Arr1[tmpL];
while(tmpR > tmpL)
{
//从右向左找小于基准值的位置
while(Arr1[tmpR] >= iFlagValue && tmpR > tmpL)
{
tmpR--;
}
//从左向右找大于基准值的位置
while(Arr1[tmpL] <= iFlagValue && tmpR > tmpL)
{
tmpL++;
}
//如果不交叉,将交换位置值
if(tmpR > tmpL)
{
iTempValue = Arr1[tmpL];
Arr1[tmpL] = Arr1[tmpR];
Arr1[tmpR] = iTempValue;
}
}
//最后将基准值替换到最后的位置
if(tmpL > iL){
Arr1[iL] = Arr1[tmpL];
Arr1[tmpL] = iFlagValue;
}
ChangeArr2(iL,tmpL-1);
ChangeArr2(tmpL+1,iR);
}
}
JAVA 快速排序
最新推荐文章于 2024-08-10 11:08:24 发布