常用排序算法java代码实现---快速排序,冒泡排序,选择排序

快速排序

public class QuickSort {
    public void qSort(int[] arr,int left,int right) {
        if(left>right) {
            return ;
        }
        int i = left;
        int j = right;
        int temp = arr[left];
        while(i<j) {
            //从右向左遍历
            while(arr[j]>=temp&&i<j) {
                j--;
            }
            //从左向右遍历
            while(arr[i]<=temp&&i<j) {
                i++;
            }
            if(i<j) {
                int k = arr[i];
                arr[i] = arr[j];
                arr[j] = k;
            }
        }
        if(arr[i]<temp) {
            arr[left] = arr[i];
            arr[i] = temp;
        }
        //System.out.println(Arrays.toString(arr));  //输出每次排序结果
        qSort(arr, left, j-1);
        qSort(arr, j+1, right);
        
    }
    public static void main(String[] args) {
         int[] arr = {5,8,12,9,7,36,24};
         QuickSort qs = new QuickSort();
         qs.qSort(arr, 0, arr.length-1);
    }
}


输出结果

[5, 7, 8, 9, 12, 24, 36]

改进思路:可以在方法执行前加个判断,判断数组是否已经有序,可以减少排序次数(可自己尝试实现)

冒泡排序

public class BubbleSort {
    //冒泡排序,排序后结果从小到大
    public void bubbleSort(int arr[]) {
        for(int i=0;i<arr.length-1;i++) {
            for(int j=0;j<arr.length-1-i;j++) {
                if(arr[j]>arr[j+1]) {
                    int temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
    }
    public static void main(String[] args) {
        int[] arr = {5,8,12,9,7,36,24};
        BubbleSort bs = new BubbleSort();
        bs.bubbleSort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

输出结果

[5, 7, 8, 9, 12, 24, 36]


改进思路:如果这次冒泡排序后与上次冒泡结果一样,则判断数组已经有序,不用再执行冒泡(自己尝试实现)

选择排序

/* 简单选择排序的基本思想:给定数组:int[] arr={里面n个数据};
 * 第1趟排序,在待排序数据arr[1]~arr[n]中选出最小的数据,
 * 将它与arrr[1]交换;第2趟,在待排序数据arr[2]~arr[n]中选出最小的数据,将它与r[2]交换;
 * 以此类推,第i趟在待排序数据arr[i]~arr[n]中选出最小的数据,将它与r[i]交换,直到全部排序完成。
 */
public class SelectSort {
    public void selectSort(int[] arr) {
        for(int i=0;i<arr.length-1;i++) {
            int k=i;
            for(int j=i;j<arr.length-1;j++) { 
                if(arr[k]> arr[j]) {
                    k=j;
                }
            }
            int temp=arr[i];
            arr[i]=arr[k];
            arr[k]=temp;
        }
    }
    public static void main(String[] args) {
        int[] arr = {5,8,12,9,7,36,24};
        SelectSort ss = new SelectSort();
        ss.selectSort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_42230478/article/details/83182523