package common;
public class SortClass {
//交换数组中2项的值
public void exangeIntValue(int a[],int i,int j){
int temp = 0;
temp = a[i];
a[i]= a[j];
a[j]= temp;
}
//冒泡排序法
public void sortMp(int a[]){
for (int i=0;i<a.length;i++){
for (int j=i+1;j<a.length;j++){
if (a[j]<a[i]){
exangeIntValue(a,i,j);
}
}
}
}
//快速排序
public void quickSort(int a[],int left,int right){
if (left >=right){
return;
}
int i=left;
int j=right;
int value = a[left];
while (i < j){
int index1 = -1;
int index2 = -1;
//从右向左逐一与a[left]的值进行比较,直到找到一个比a[left]小的数
while ((i<j) && (a[j]>=value) ){
j--;
}
if (i<j){
index1 = j; //当找到一个比a[left]小的数字,记下此时J的索引
}
//从左向右逐一和a[left]的值进行比较,直到找到一个比a[value]大的数字
while ((i<j) && (a[i]<=value)){
i++;
}
if (i<j){
index2 = i; //当找到一个比a[left]大的数字,记下此时J的索引
}
if ((index1>=0)&&(index2>=0)){ //当左右2侧均找到了要求的数,则交换这2个数
exangeIntValue(a,i,j);
}
}
if (i != left){ //交换索i和left的值
exangeIntValue(a,i,left);
}
quickSort(a,left,i-1); //把i左侧的数据递归排序
quickSort(a,i+1,right); //把i右侧的数组递归排序
}
}