排序算法(三)------冒泡排序和快速排序

来源:互联网 发布:php fread函数的用法 编辑:程序博客网 时间:2024/04/27 22:28

冒泡排序

算法思路

在一组待排数据,从上到下比较和调整两个相邻的数据,大的往下沉小的往上冒。(a[i]和a[i+1]比较,如果a[i]>a[i+1],交换数据,继续比较a[i+1]和a[i+2])

算法图解

1.原始数据
这里写图片描述
2.比较3和4,不交换
这里写图片描述
3.比较4和1,交换
这里写图片描述
4.比较4和2,交换
这里写图片描述
5.从头再遍历一遍,最后一位已经最大不再遍历
这里写图片描述

代码详解

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

快速排序

算法思路

在数据中取一个基准值(一般取第一个),将剩余数据与之比较且分为两部分,一部分大于等于基准值,另一部分小于基准值,再按照这个方法将这两部分进行递归排序。

算法图解

这里写图片描述

代码详解

private static int getMiddle(int[] arr, int low, int high) {    int temp = arr[low];    while (low < high) {        while (low < high && arr[high] >= temp) {            high--;        }        arr[low] = arr[high];        while (low < high && arr[low] <= temp) {            low++;        }        arr[high] = arr[low];    }    arr[low] = temp;    return low;}private static int[] quickSort(int[] arr, int low, int high) {    if (low < high) {        int middle = getMiddle(arr, low, high);        quickSort(arr, low, middle - 1);        quickSort(arr, middle + 1, high);    }    return arr;}
0 0
原创粉丝点击