快速排序

public static void paixu(String[]arr,int left,int right,int index) {

if(left > right) {
return;
}
// 0 gridId 1 maxlng 2 maxlat 3 minlng 4 minlat 以;号分割
//按最大经度排序
double base = Double.parseDouble(arr[left].split(",")[index]);

int i = left;
int j = right;

while(i != j) {
//找到最大得数 最大的数就跑到前面了
while (Double.parseDouble(arr[j].split(",")[index])>= base && i < j) {
j--;
System.out.println(j);
}
//找到最小得数 最小的数就跑到后面了
while (Double.parseDouble(arr[i].split(",")[index]) <= base && i < j) {
i++;
System.out.println(i);
}
//如果最大和最小的数不相遇,那么交换这两个数的位置 交换后顺序就是从小到大
//交换后最大的数在尾端,最小的数在首端
if(i < j ) {
String temp = arr[i];
arr[i]= arr[j];
arr[j]= temp;
}
}
//如果最大和最小的相遇
String temp = arr[i];
//就把相遇位置的数和基准交换
arr[i]=arr[left];
arr[left] = temp;
//当排序排到i和j相遇时,就分成前后两部分

//
//再拿最左边的数到基准的前一位进行排序 对前一部分再次进行排序
paixu(arr, left, i-1,index);
//拿基准数后一位到最右边的数来排序 对后一部分进行排序
paixu(arr, j + 1, right,index);

}

原文地址:https://www.cnblogs.com/CHWLearningNotes/p/9158928.html