快速排序java实现

1.QuickSortMain

package cn.xiaobo.QuickSort;html

/**
 * 快速排序的思想:选准一个基准点;通常拿数组的第一个元素做为基准点;
 * 而后选取两个指针;i=left;j=right;两边进行;小于基准点的放在左边;大于放在右边;
 * 最后i=j;将基准点的值给arr[i];
 * 再如下标i为界限依次进行递归;不要忘记跳出递归的条件是i=j;
 * 参考博客:https://www.cnblogs.com/foreverking/articles/2234225.html
 * 他的源程序我作了点改动;
 * @author Administrator
 *
 */
public class QuickSortMain {
    public static void main(String[] args) {
        int[] arr=new int[10];
//    for(int i=0;i<10;i++){
//        arr[i]=10-i;
//    };
    arr[3]=67;
    arr[4]=76;
    arr[5]=99;
    arr[6]=64;
    arr[1]=2;
    arr[0]=1;
    arr[2]=6;
        QuickSortApp quickSortApp=new QuickSortApp();
        System.out.print("排序前:");
        for(int i=0;i<10;i++){
            System.out.print(arr[i]+"  ");
        };
    
        quickSortApp.Sort(arr, 0, 9);
        
        System.out.print("排序后:");
        for(int i=0;i<10;i++){
            System.out.print(arr[i]+"  ");
        };
    }
数组

}ui

2.QuickSortApp

package cn.xiaobo.QuickSort;spa

public class QuickSortApp {.net

    public void Sort(int[] arr,int _left,int _right) {
        int left=_left;
        int right=_right;
        
        //递归的临界点是左边边界等于右边边界;
        if(left<right){
        //最后的结果必定是左边的下标等于右边的下标
            
            //选取基准点
            int temp=arr[left];
        while(left!=right){
            
            //先从right开始搜索,当搜索到比temp小时,跳出循环
            
            while(left<right&&arr[right]>temp){
                right--;
            }
            //arr[left]的值给了temp,因此先把arr[right]给arr[left]
            //多出一个空位
            if(right>left){
                arr[left]=arr[right];
            }
            //循环中找到比temp大的值;
            while(left<right&&arr[left]<=temp){
                left++;
            }
            //左边搜索到了比temp大的值,放在右边空缺的位置
            if(right>left){
                arr[right]=arr[left];
            }
        }
        //把基准值给最后一个;
        arr[left]=temp;
        //再对两边进行递归,因为arr[i]已是排好序的,因此不用加入;
        Sort(arr,_left,left-1);
        Sort(arr,right+1,_right);
        }
    }
        
}
指针

3.参考博客

        https://www.cnblogs.com/foreverking/articles/2234225.html

相关文章
相关标签/搜索