常用排序(冒泡,选择,插入,快速)

算法:

1. 冒泡排序

说明:外层循环以第1个元素为起点i,内层循环以第i+1为起点j,比较i和j对应的元素大小,只要有j元素小于i元素,则两者替换

代码示例:

public static int[] sort(int[] arr) {
        int temp = 0;
        for(int i=0;i<arr.length-1;i++) {
            for(int j=i+1;j<arr.length;j++) {
                if(arr[j] < arr[i]) {
                   temp = arr[i];
                    arr[i] = arr[j];
                   arr[j] = temp;
                }
            }
        }
        return arr;
}

 

2.选择排序:

说明:类似于冒泡排序,外层循环以第1个元素为起点i,内层循环以第i+1为起点j,先找出内层元素中最小的元素,两者替换(优于冒泡排序)

代码示例:

public static int[] sort(int[] arr) {
        int temp = 0;
        for(int i=0;i<arr.length-1;i++) {
            int lowIndex = i;
            for(int j=i+1;j<arr.length;j++) {
                if(arr[j] < arr[lowIndex]) {
                   lowIndex = j;
                }
            }

            temp = arr[i];
            arr[i] = arr[lowIndex];
            arr[lowIndex] = temp;
        }
        return arr;
}

 

3.插入排序

图解:

1

2

代码示例:

public static int[] sort(int[] arr) {
    int temp = 0;
    for(int i=1;i<arr.length;i++) {
        for(int j=0;j<i;j++) {
        if(arr[i] < arr[j]) {
           temp = arr[i];
           arr[i] = arr[j];
           arr[j] = temp;
        }
        }
    }
    return arr;
}

 

4.快速排序:

图解:

3

代码示例:

    public static int getPoint(int[] arr, int low, int high) {
        int point = low;
        int contrast = arr[point];
        for (int i = low + 1; i <= high; i++) {
            if (arr[i] < contrast) {
                point++;
                swap(arr, point, i);
            }
        }
        swap(arr, low, point);
        return point;
    }

    public static int[] quickSort(int[] arr, int low, int high) {
        if (low < high) {
            int point = getPoint(arr, low, high);
            quickSort(arr, low, point - 1);
            quickSort(arr, point + 1, high);

        }

        return arr;
    }

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>