复习 冒泡,快速 排序

来源:互联网 发布:域名地址解析 编辑:程序博客网 时间:2024/05/30 07:14

冒泡排序

冒泡排序是面试最基础的内容一定要会

冒泡排序的思想
对于一组数组 针对从大到小 每次循环一个一个比较找到一个最大的数放置末尾,后一次循环的数个数将会比前一次少1,因为已经确定了一个数的位置,以此下去将会排完所有数据。

来张图看把清楚点

这里写图片描述

冒泡排序通常使用两个for循环
第一个for循环则是确定循环轮数
第二个for循环则是确定一个最大数

具体实现

//数组名字 afor(int i = 0 ; i<a.length ; i++){    for(int j = 0 ;j<a.length-1-i ; j++){        if(a[j]>a[j+1]){            int temp = a[j];            a[j] = a[j+1];            a[j+1] = temp;        }    }}

这便是冒泡排序了。


快速排序

接下来是快速排序,就有点进阶了。

快速排序的思想
快速排序是对于冒泡排序的一种改进,它的原理是:
对于给定的一组记录,选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分,直到序列中的所有记录均有序为止。

再引用一张图片解释下

这里写图片描述

代码实现

public class quickSort{    public static void sort(int[] a, int low, int height){        int i,j,index;        if(low > height)            return;        i = low;        j = height;        index = a[i]; //使用第一个数作为基准数        while( i < low ){            while (i < j && a[j] >= index)                j--;            if (i < j)                a[i++] = a[j];// 用比基准小的记录替换低位记录            while (i < j && a[i] < index)                i++;            if (i < j) // 用比基准大的记录替换高位记录                a[j--] = a[i];          }         a[i] = index;// 将基准数值替换回 a[i]        sort(a, low, i - 1); // 对低子表进行递归排序        sort(a, i + 1, hight); // 对高子表进行递归排序    }    public static void quickSort(int a[]) {        sort(a, 0, a.length - 1);    }    public static void main(String[] args) {        int a[] = { 49, 38, 65, 97, 76, 13, 27, 49 };        quickSort(a);        System.out.println(Arrays.toString(a));    }}

以上便是快速排序的内容了,希望大家都能掌握

1 0
原创粉丝点击