• 快速排序


    package sort;
    
    public class QuickSort {
    	public static void quickSort(int[] list){
    		quickSort(list,0,list.length-1);
    		}
    	//注意这里是private
    	private static void quickSort(int[] list,int first ,int last){
    		//这里有一个if条件 别忘了
    		if(last>first){
    		int pivotIndex = partition(list, first, last);
    		quickSort(list,first,pivotIndex-1);//这里是first和pivotIndex-1
    		quickSort(list,pivotIndex+1,last);//这里是pivoeIndex+1
    		}
    		}
    	//注意这里是的返回值是int
    	private static int partition(int[] list,int first,int last){
    		int pivot = list[first];
    		int low = first+1;
    		int high = last;
    		
    	while(low<high){
    		while(low<= high&& list[low]<=pivot)
    			low++;
    		while(low<=high&&list[high]>pivot)
    			high--;
    		if(high>low){  //这里面要注意的是比较的是下标而不是数组值 ,因为此时数组值就是hign的比low的小了
    			int temp= list[high];  //自己连交换条件都写错了
         		list[high] = list[low];
    			list[low]=temp;
    			
    		}
    		
    	}
    	
    	while(high>first&&list[high]>=pivot) //注意这里面是大于等于pivot
    		high--;
    	if(pivot>list[high])
    	{   list[first]=list[high];
    		list[high]=pivot;
    		return high;
    	}
    	else return first;
    		
    	}
    
    	
    public static void main(String[] args){
    		int[] list = {2,3,2,5,6,1,3,14,12};
    		quickSort(list);
    		for(int i=0;i<list.length;i++)
    		System.out.print(list[i]+" ");
    
    }
    }
    

      

     快速排序在数组中选择一个称为主元的元素,将数组分为两个部分,使得第一部分所有元素都小于或等于主元,而第二部分中的所有元素都大于主元。对第一部分递归的应用快速排序算法,然后对第二部分递归地应用快速排序算法

  • 相关阅读:
    C++ 命名管道示例
    C#模块初始化注入
    【Oracle】存储过程写法小例子
    【Kettle】4、SQL SERVER到SQL SERVER数据转换抽取实例
    【Kettle】3、数据源连接配置
    【Kettle】2、文件夹与界面介绍
    【Kettle】1、简单介绍
    【Kettle】8、变量参数传递介绍
    【Oracle】DBMS_STATS.GATHER_TABLE_STATS详解
    【Oracle】DBMS_STATS.GATHER_SCHEMA_STATS详解
  • 原文地址:https://www.cnblogs.com/kisty/p/5687271.html
Copyright © 2020-2023  润新知