快速排序
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);
	
	}
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号